{"id":871,"date":"2026-10-27T11:32:12","date_gmt":"2026-10-27T10:32:12","guid":{"rendered":"https:\/\/zajecia.tsadowski.pl\/?p=871"},"modified":"2026-10-27T11:32:29","modified_gmt":"2026-10-27T10:32:29","slug":"zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by","status":"publish","type":"post","link":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/","title":{"rendered":"Zaawansowane zapytania SQL \u2013 JOIN, WHERE, GROUP BY, HAVING i ORDER BY"},"content":{"rendered":"<h2>Cel lekcji<\/h2>\n<p>Ucze\u0144 potrafi:<\/p>\n<ul>\n<li>\u0142\u0105czy\u0107 dane z kilku tabel za pomoc\u0105 <code>JOIN<\/code>;<\/li>\n<li>tworzy\u0107 z\u0142o\u017cone warunki filtrowania z wykorzystaniem <code>WHERE<\/code>, <code>AND<\/code>, <code>OR<\/code>, <code>NOT<\/code>i <code>LIKE<\/code>;<\/li>\n<li>stosowa\u0107 funkcje agreguj\u0105ce <code>COUNT()<\/code>, <code>SUM()<\/code>, <code>AVG()<\/code>, <code>MIN()<\/code> i <code>MAX()<\/code> w zapytaniach \u0142\u0105cz\u0105cych tabele;<\/li>\n<li>grupowa\u0107 dane wed\u0142ug jednej lub kilku kolumn za pomoc\u0105 <code>GROUP BY<\/code>;<\/li>\n<li>filtrowa\u0107 wyniki grupowania za pomoc\u0105 <code>HAVING<\/code>;<\/li>\n<li>\u0142\u0105czy\u0107 warunki <code>WHERE<\/code> i <code>HAVING<\/code> w jednym zapytaniu;<\/li>\n<li>sortowa\u0107 wyniki wed\u0142ug kilku kolumn, w r\u00f3\u017cnych kierunkach;<\/li>\n<li>tworzy\u0107 rozbudowane zapytania SQL na podstawie opisu problemu.<\/li>\n<\/ul>\n<h2>1. Przygotowanie bazy danych<\/h2>\n<p>Podczas lekcji b\u0119dziemy pracowa\u0107 na bazie danych przedstawiaj\u0105cej sklep internetowy. Baza zawiera informacje o klientach, kategoriach produkt\u00f3w, produktach, zam\u00f3wieniach oraz pozycjach zam\u00f3wie\u0144.<\/p>\n<p>Uruchom ca\u0142y poni\u017cszy skrypt w MySQL, np. w phpMyAdmin lub MySQL Workbench. Je\u017celi baza o podanej nazwie ju\u017c istnieje, skrypt j\u0105 usunie i utworzy ponownie.<\/p>\n<h3>Skrypt tworz\u0105cy baz\u0119 danych<\/h3>\n<pre><code class=\"lang-sql language-sql sql\">DROP DATABASE IF EXISTS sklep_join_advanced;\nCREATE DATABASE sklep_join_advanced\nCHARACTER SET utf8mb4\nCOLLATE utf8mb4_unicode_ci;\n\nUSE sklep_join_advanced;\n\nCREATE TABLE klienci (\n    id_klienta INT PRIMARY KEY,\n    imie VARCHAR(40) NOT NULL,\n    nazwisko VARCHAR(50) NOT NULL,\n    miasto VARCHAR(50) NOT NULL,\n    typ_klienta VARCHAR(20) NOT NULL\n);\n\nCREATE TABLE kategorie (\n    id_kategorii INT PRIMARY KEY,\n    nazwa VARCHAR(50) NOT NULL\n);\n\nCREATE TABLE produkty (\n    id_produktu INT PRIMARY KEY,\n    nazwa VARCHAR(100) NOT NULL,\n    id_kategorii INT NOT NULL,\n    cena DECIMAL(10,2) NOT NULL,\n    stan_magazynowy INT NOT NULL,\n    FOREIGN KEY (id_kategorii)\n        REFERENCES kategorie(id_kategorii)\n);\n\nCREATE TABLE zamowienia (\n    id_zamowienia INT PRIMARY KEY,\n    id_klienta INT NOT NULL,\n    data_zamowienia DATE NOT NULL,\n    status VARCHAR(20) NOT NULL,\n    metoda_platnosci VARCHAR(20) NOT NULL,\n    FOREIGN KEY (id_klienta)\n        REFERENCES klienci(id_klienta)\n);\n\nCREATE TABLE pozycje_zamowien (\n    id_pozycji INT PRIMARY KEY,\n    id_zamowienia INT NOT NULL,\n    id_produktu INT NOT NULL,\n    ilosc INT NOT NULL,\n    cena_sztuki DECIMAL(10,2) NOT NULL,\n    FOREIGN KEY (id_zamowienia)\n        REFERENCES zamowienia(id_zamowienia),\n    FOREIGN KEY (id_produktu)\n        REFERENCES produkty(id_produktu)\n);\n\nINSERT INTO klienci\n(id_klienta, imie, nazwisko, miasto, typ_klienta) VALUES\n(1, &#039;Adam&#039;, &#039;Kowalski&#039;, &#039;Warszawa&#039;, &#039;indywidualny&#039;),\n(2, &#039;Anna&#039;, &#039;Nowak&#039;, &#039;Krakow&#039;, &#039;firmowy&#039;),\n(3, &#039;Piotr&#039;, &#039;Wisniewski&#039;, &#039;Gdansk&#039;, &#039;indywidualny&#039;),\n(4, &#039;Ewa&#039;, &#039;Wojcik&#039;, &#039;Warszawa&#039;, &#039;firmowy&#039;),\n(5, &#039;Tomasz&#039;, &#039;Kaminski&#039;, &#039;Poznan&#039;, &#039;indywidualny&#039;),\n(6, &#039;Katarzyna&#039;, &#039;Lewandowska&#039;, &#039;Krakow&#039;, &#039;indywidualny&#039;),\n(7, &#039;Michal&#039;, &#039;Zielinski&#039;, &#039;Lublin&#039;, &#039;firmowy&#039;),\n(8, &#039;Magdalena&#039;, &#039;Szymanska&#039;, &#039;Gdansk&#039;, &#039;indywidualny&#039;),\n(9, &#039;Pawel&#039;, &#039;Dabrowski&#039;, &#039;Warszawa&#039;, &#039;indywidualny&#039;),\n(10, &#039;Joanna&#039;, &#039;Kozlowska&#039;, &#039;Poznan&#039;, &#039;firmowy&#039;),\n(11, &#039;Marcin&#039;, &#039;Jankowski&#039;, &#039;Lublin&#039;, &#039;indywidualny&#039;),\n(12, &#039;Agnieszka&#039;, &#039;Mazur&#039;, &#039;Krakow&#039;, &#039;firmowy&#039;),\n(13, &#039;Robert&#039;, &#039;Piotrowski&#039;, &#039;Gdansk&#039;, &#039;indywidualny&#039;),\n(14, &#039;Natalia&#039;, &#039;Grabowska&#039;, &#039;Warszawa&#039;, &#039;firmowy&#039;);\n\nINSERT INTO kategorie (id_kategorii, nazwa) VALUES\n(1, &#039;Komputery&#039;),\n(2, &#039;Akcesoria&#039;),\n(3, &#039;Gaming&#039;),\n(4, &#039;Smartfony&#039;),\n(5, &#039;AGD&#039;),\n(6, &#039;Sieci&#039;);\n\nINSERT INTO produkty\n(id_produktu, nazwa, id_kategorii, cena, stan_magazynowy) VALUES\n(1, &#039;Laptop Lenovo&#039;, 1, 3500.00, 12),\n(2, &#039;Laptop Dell&#039;, 1, 4200.00, 8),\n(3, &#039;Monitor 27 cali&#039;, 2, 1100.00, 18),\n(4, &#039;Klawiatura mechaniczna&#039;, 2, 350.00, 25),\n(5, &#039;Mysz Logitech&#039;, 2, 120.00, 50),\n(6, &#039;Sluchawki gamingowe&#039;, 3, 280.00, 30),\n(7, &#039;Konsola Xbox&#039;, 3, 2200.00, 10),\n(8, &#039;Konsola PlayStation&#039;, 3, 2500.00, 6),\n(9, &#039;Smartfon Samsung&#039;, 4, 2800.00, 20),\n(10, &#039;Smartfon Xiaomi&#039;, 4, 1900.00, 15),\n(11, &#039;Ekspres do kawy&#039;, 5, 1600.00, 9),\n(12, &#039;Odkurzacz&#039;, 5, 850.00, 14),\n(13, &#039;Router TP-Link&#039;, 6, 320.00, 19),\n(14, &#039;Kamera internetowa&#039;, 2, 250.00, 35),\n(15, &#039;Tablet Samsung&#039;, 1, 1800.00, 11),\n(16, &#039;Glosnik Bluetooth&#039;, 2, 450.00, 0),\n(17, &#039;Drukarka HP&#039;, 1, 750.00, 16),\n(18, &#039;Smartwatch Apple&#039;, 4, 1700.00, 4),\n(19, &#039;Blender Bosch&#039;, 5, 420.00, 13),\n(20, &#039;Mikrofon USB&#039;, 2, 390.00, 22);\n\nINSERT INTO zamowienia\n(id_zamowienia, id_klienta, data_zamowienia, status, metoda_platnosci) VALUES\n(1, 1, &#039;2026-01-10&#039;, &#039;zrealizowane&#039;, &#039;karta&#039;),\n(2, 2, &#039;2026-01-15&#039;, &#039;zrealizowane&#039;, &#039;przelew&#039;),\n(3, 3, &#039;2026-01-20&#039;, &#039;wyslane&#039;, &#039;karta&#039;),\n(4, 1, &#039;2026-02-05&#039;, &#039;zrealizowane&#039;, &#039;blik&#039;),\n(5, 4, &#039;2026-02-10&#039;, &#039;anulowane&#039;, &#039;karta&#039;),\n(6, 5, &#039;2026-02-15&#039;, &#039;zrealizowane&#039;, &#039;gotowka&#039;),\n(7, 6, &#039;2026-02-20&#039;, &#039;wyslane&#039;, &#039;przelew&#039;),\n(8, 7, &#039;2026-03-01&#039;, &#039;zrealizowane&#039;, &#039;karta&#039;),\n(9, 8, &#039;2026-03-05&#039;, &#039;zrealizowane&#039;, &#039;blik&#039;),\n(10, 9, &#039;2026-03-10&#039;, &#039;oczekujace&#039;, &#039;przelew&#039;),\n(11, 10, &#039;2026-03-15&#039;, &#039;zrealizowane&#039;, &#039;karta&#039;),\n(12, 2, &#039;2026-03-20&#039;, &#039;wyslane&#039;, &#039;blik&#039;),\n(13, 3, &#039;2026-04-01&#039;, &#039;zrealizowane&#039;, &#039;przelew&#039;),\n(14, 5, &#039;2026-04-05&#039;, &#039;anulowane&#039;, &#039;karta&#039;),\n(15, 11, &#039;2026-04-10&#039;, &#039;zrealizowane&#039;, &#039;gotowka&#039;),\n(16, 12, &#039;2026-04-15&#039;, &#039;oczekujace&#039;, &#039;przelew&#039;),\n(17, 4, &#039;2026-04-20&#039;, &#039;zrealizowane&#039;, &#039;karta&#039;),\n(18, 6, &#039;2026-05-01&#039;, &#039;zrealizowane&#039;, &#039;blik&#039;),\n(19, 7, &#039;2026-05-05&#039;, &#039;wyslane&#039;, &#039;przelew&#039;),\n(20, 8, &#039;2026-05-10&#039;, &#039;zrealizowane&#039;, &#039;gotowka&#039;),\n(21, 1, &#039;2026-05-15&#039;, &#039;zrealizowane&#039;, &#039;karta&#039;),\n(22, 9, &#039;2026-05-20&#039;, &#039;anulowane&#039;, &#039;blik&#039;),\n(23, 10, &#039;2026-06-01&#039;, &#039;zrealizowane&#039;, &#039;przelew&#039;),\n(24, 11, &#039;2026-06-05&#039;, &#039;wyslane&#039;, &#039;karta&#039;),\n(25, 12, &#039;2026-06-10&#039;, &#039;zrealizowane&#039;, &#039;blik&#039;),\n(26, 3, &#039;2026-06-15&#039;, &#039;zrealizowane&#039;, &#039;karta&#039;),\n(27, 4, &#039;2026-06-20&#039;, &#039;oczekujace&#039;, &#039;gotowka&#039;),\n(28, 5, &#039;2026-07-01&#039;, &#039;zrealizowane&#039;, &#039;przelew&#039;),\n(29, 6, &#039;2026-07-05&#039;, &#039;zrealizowane&#039;, &#039;karta&#039;),\n(30, 7, &#039;2026-07-10&#039;, &#039;wyslane&#039;, &#039;blik&#039;),\n(31, 8, &#039;2026-07-15&#039;, &#039;zrealizowane&#039;, &#039;gotowka&#039;),\n(32, 9, &#039;2026-07-20&#039;, &#039;zrealizowane&#039;, &#039;przelew&#039;),\n(33, 10, &#039;2026-08-01&#039;, &#039;anulowane&#039;, &#039;karta&#039;),\n(34, 11, &#039;2026-08-05&#039;, &#039;zrealizowane&#039;, &#039;blik&#039;),\n(35, 12, &#039;2026-08-10&#039;, &#039;wyslane&#039;, &#039;przelew&#039;),\n(36, 1, &#039;2026-08-15&#039;, &#039;zrealizowane&#039;, &#039;karta&#039;),\n(37, 2, &#039;2026-08-20&#039;, &#039;zrealizowane&#039;, &#039;blik&#039;),\n(38, 3, &#039;2026-09-01&#039;, &#039;zrealizowane&#039;, &#039;przelew&#039;),\n(39, 4, &#039;2026-09-05&#039;, &#039;wyslane&#039;, &#039;karta&#039;),\n(40, 5, &#039;2026-09-10&#039;, &#039;zrealizowane&#039;, &#039;gotowka&#039;),\n(41, 6, &#039;2026-09-15&#039;, &#039;zrealizowane&#039;, &#039;blik&#039;),\n(42, 13, &#039;2026-09-20&#039;, &#039;oczekujace&#039;, &#039;przelew&#039;),\n(43, 14, &#039;2026-09-22&#039;, &#039;zrealizowane&#039;, &#039;karta&#039;);\n\nINSERT INTO pozycje_zamowien\n(id_pozycji, id_zamowienia, id_produktu, ilosc, cena_sztuki) VALUES\n(1, 1, 1, 1, 3500.00),\n(2, 1, 5, 1, 120.00),\n(3, 2, 3, 2, 1100.00),\n(4, 2, 4, 1, 350.00),\n(5, 3, 2, 1, 4200.00),\n(6, 3, 9, 1, 2800.00),\n(7, 4, 7, 1, 2200.00),\n(8, 4, 6, 2, 280.00),\n(9, 5, 9, 1, 2800.00),\n(10, 5, 18, 1, 1700.00),\n(11, 6, 12, 2, 850.00),\n(12, 6, 19, 1, 420.00),\n(13, 7, 10, 2, 1900.00),\n(14, 8, 13, 2, 320.00),\n(15, 8, 14, 1, 250.00),\n(16, 9, 6, 3, 280.00),\n(17, 9, 8, 1, 2500.00),\n(18, 10, 9, 1, 2800.00),\n(19, 11, 2, 1, 4200.00),\n(20, 11, 4, 1, 350.00),\n(21, 12, 15, 1, 1800.00),\n(22, 12, 5, 2, 120.00),\n(23, 13, 1, 1, 3500.00),\n(24, 13, 3, 1, 1100.00),\n(25, 14, 9, 1, 2800.00),\n(26, 14, 10, 1, 1900.00),\n(27, 15, 17, 2, 750.00),\n(28, 15, 14, 2, 250.00),\n(29, 16, 18, 1, 1700.00),\n(30, 17, 2, 1, 4200.00),\n(31, 17, 3, 1, 1100.00),\n(32, 17, 4, 2, 350.00),\n(33, 18, 7, 1, 2200.00),\n(34, 18, 6, 1, 280.00),\n(35, 19, 13, 3, 320.00),\n(36, 19, 20, 2, 390.00),\n(37, 20, 12, 1, 850.00),\n(38, 20, 19, 2, 420.00),\n(39, 21, 1, 1, 3500.00),\n(40, 21, 15, 1, 1800.00),\n(41, 22, 8, 1, 2500.00),\n(42, 22, 6, 2, 280.00),\n(43, 23, 10, 2, 1900.00),\n(44, 23, 5, 3, 120.00),\n(45, 24, 17, 1, 750.00),\n(46, 24, 13, 2, 320.00),\n(47, 25, 11, 1, 1600.00),\n(48, 25, 19, 2, 420.00),\n(49, 26, 2, 1, 4200.00),\n(50, 26, 9, 1, 2800.00),\n(51, 27, 3, 2, 1100.00),\n(52, 27, 14, 1, 250.00),\n(53, 28, 7, 1, 2200.00),\n(54, 28, 6, 2, 280.00),\n(55, 29, 10, 1, 1900.00),\n(56, 29, 18, 1, 1700.00),\n(57, 30, 1, 1, 3500.00),\n(58, 30, 4, 2, 350.00),\n(59, 31, 12, 1, 850.00),\n(60, 31, 5, 2, 120.00),\n(61, 32, 9, 1, 2800.00),\n(62, 32, 13, 2, 320.00),\n(63, 33, 2, 1, 4200.00),\n(64, 33, 20, 2, 390.00),\n(65, 34, 15, 2, 1800.00),\n(66, 34, 14, 1, 250.00),\n(67, 35, 8, 1, 2500.00),\n(68, 35, 6, 2, 280.00),\n(69, 36, 1, 1, 3500.00),\n(70, 36, 3, 2, 1100.00),\n(71, 37, 4, 3, 350.00),\n(72, 37, 5, 5, 120.00),\n(73, 38, 11, 1, 1600.00),\n(74, 38, 12, 1, 850.00),\n(75, 39, 2, 1, 4200.00),\n(76, 39, 13, 2, 320.00),\n(77, 40, 17, 1, 750.00),\n(78, 40, 20, 3, 390.00),\n(79, 41, 7, 1, 2200.00),\n(80, 41, 8, 1, 2500.00),\n(81, 42, 9, 1, 2800.00),\n(82, 42, 5, 2, 120.00),\n(83, 43, 1, 1, 3500.00),\n(84, 43, 15, 2, 1800.00);<\/code><\/pre>\n<h2>2. \u0106wiczenia<\/h2>\n<p>Wykonaj wszystkie zadania samodzielnie. Do ka\u017cdego \u0107wiczenia przygotuj osobne zapytanie SQL. Nie zmieniaj danych w bazie. W wynikach wy\u015bwietlaj tylko te kolumny, kt\u00f3re s\u0105 potrzebne do rozwi\u0105zania zadania.<\/p>\n<h3>\u0106wiczenie 1 \u2013 Produkty w okre\u015blonych kategoriach<\/h3>\n<p>Wy\u015bwietl nazwy produkt\u00f3w, nazwy kategorii oraz ceny produkt\u00f3w nale\u017c\u0105cych do kategorii <code>Komputery<\/code>, <code>Gaming<\/code> lub <code>Sieci<\/code>. Uwzgl\u0119dnij wy\u0142\u0105cznie produkty kosztuj\u0105ce wi\u0119cej ni\u017c 300 z\u0142. Posortuj wynik najpierw alfabetycznie wed\u0142ug nazwy kategorii, a nast\u0119pnie malej\u0105co wed\u0142ug ceny.<\/p>\n<h3>\u0106wiczenie 2 \u2013 Zam\u00f3wienia klient\u00f3w z wybranych miast<\/h3>\n<p>Wy\u015bwietl imiona i nazwiska klient\u00f3w, miasta, identyfikatory zam\u00f3wie\u0144, daty zam\u00f3wie\u0144 oraz ich statusy. Uwzgl\u0119dnij klient\u00f3w z Warszawy lub Krakowa, ale pomi\u0144 zam\u00f3wienia anulowane. Poka\u017c wy\u0142\u0105cznie zam\u00f3wienia z okresu od 1 marca do 30 czerwca 2026 roku. Wyniki posortuj od najnowszego zam\u00f3wienia, a przy tej samej dacie alfabetycznie wed\u0142ug nazwiska klienta.<\/p>\n<h3>\u0106wiczenie 3 \u2013 Szczeg\u00f3\u0142owa lista zakup\u00f3w<\/h3>\n<p>Wy\u015bwietl identyfikator zam\u00f3wienia, dat\u0119 zam\u00f3wienia, imi\u0119 i nazwisko klienta, nazw\u0119 produktu, kategori\u0119, liczb\u0119 sztuk oraz cen\u0119 jednostkow\u0105 z pozycji zam\u00f3wienia. Poka\u017c wy\u0142\u0105cznie zam\u00f3wienia o statusie <code>zrealizowane<\/code> lub <code>wyslane<\/code>, w kt\u00f3rych kupiono co najmniej 2 sztuki danego produktu. Uwzgl\u0119dnij produkty kosztuj\u0105ce mniej ni\u017c 1000 z\u0142 lub wi\u0119cej ni\u017c 2500 z\u0142. Posortuj wyniki malej\u0105co wed\u0142ug identyfikatora zam\u00f3wienia, a nast\u0119pnie rosn\u0105co wed\u0142ug nazwy produktu.<\/p>\n<h3>\u0106wiczenie 4 \u2013 Warto\u015b\u0107 poszczeg\u00f3lnych pozycji<\/h3>\n<p>Wy\u015bwietl identyfikator zam\u00f3wienia, dat\u0119, nazwisko klienta, nazw\u0119 produktu, liczb\u0119 sztuk oraz warto\u015b\u0107 pozycji zam\u00f3wienia obliczon\u0105 na podstawie liczby sztuk i ceny jednostkowej zapisanej w <code>pozycje_zamowien<\/code>. Uwzgl\u0119dnij tylko zam\u00f3wienia niezako\u0144czone anulowaniem, z\u0142o\u017cone po 31 marca 2026 roku, zawieraj\u0105ce produkty z kategorii <code>Akcesoria<\/code>, <code>AGD<\/code> lub <code>Sieci<\/code>. Poka\u017c pozycje o warto\u015bci przekraczaj\u0105cej 500 z\u0142 i posortuj je malej\u0105co wed\u0142ug warto\u015bci pozycji.<\/p>\n<h3>\u0106wiczenie 5 \u2013 Podsumowanie kategorii produkt\u00f3w<\/h3>\n<p>Dla ka\u017cdej kategorii wy\u015bwietl jej nazw\u0119, liczb\u0119 produkt\u00f3w, najni\u017csz\u0105 cen\u0119, najwy\u017csz\u0105 cen\u0119 oraz \u015bredni\u0105 cen\u0119 produkt\u00f3w. Uwzgl\u0119dnij tylko produkty, kt\u00f3rych stan magazynowy jest wi\u0119kszy od zera. Poka\u017c wy\u0142\u0105cznie kategorie, w kt\u00f3rych znajduj\u0105 si\u0119 co najmniej 3 dost\u0119pne produkty. Wyniki posortuj malej\u0105co wed\u0142ug liczby produkt\u00f3w, a nast\u0119pnie wed\u0142ug \u015bredniej ceny.<\/p>\n<h3>\u0106wiczenie 6 \u2013 Aktywno\u015b\u0107 klient\u00f3w<\/h3>\n<p>Dla ka\u017cdego klienta, kt\u00f3ry z\u0142o\u017cy\u0142 przynajmniej jedno zam\u00f3wienie, wy\u015bwietl imi\u0119, nazwisko, miasto, liczb\u0119 wszystkich zam\u00f3wie\u0144 oraz liczb\u0119 zam\u00f3wie\u0144 zrealizowanych. Uwzgl\u0119dnij wy\u0142\u0105cznie klient\u00f3w firmowych z Warszawy, Krakowa lub Gda\u0144ska. Poka\u017c tylko tych klient\u00f3w, kt\u00f3rzy z\u0142o\u017cyli co najmniej 3 zam\u00f3wienia, z czego co najmniej 2 zosta\u0142y zrealizowane. Posortuj wynik malej\u0105co wed\u0142ug liczby zam\u00f3wie\u0144, a nast\u0119pnie alfabetycznie wed\u0142ug nazwiska.<\/p>\n<h3>\u0106wiczenie 7 \u2013 Kategorie i sprzedane sztuki<\/h3>\n<p>Dla ka\u017cdej kategorii oblicz \u0142\u0105czn\u0105 liczb\u0119 sztuk produkt\u00f3w znajduj\u0105cych si\u0119 w pozycjach zam\u00f3wie\u0144, liczb\u0119 r\u00f3\u017cnych produkt\u00f3w, kt\u00f3re pojawi\u0142y si\u0119 w zam\u00f3wieniach, oraz liczb\u0119 r\u00f3\u017cnych zam\u00f3wie\u0144 zawieraj\u0105cych produkty z tej kategorii. Uwzgl\u0119dnij wy\u0142\u0105cznie zam\u00f3wienia o statusie <code>zrealizowane<\/code> lub <code>wyslane<\/code>, z\u0142o\u017cone w drugim i trzecim kwartale 2026 roku. Poka\u017c kategorie, dla kt\u00f3rych sprzedano co najmniej 8 sztuk. Wyniki posortuj malej\u0105co wed\u0142ug liczby sprzedanych sztuk.<\/p>\n<h3>\u0106wiczenie 8 \u2013 Klienci i ich wydatki<\/h3>\n<p>Dla ka\u017cdego klienta oblicz \u0142\u0105czn\u0105 warto\u015b\u0107 zakup\u00f3w, \u015bredni\u0105 warto\u015b\u0107 zam\u00f3wienia oraz liczb\u0119 zam\u00f3wie\u0144. Warto\u015b\u0107 pojedynczego zam\u00f3wienia oblicz na podstawie jego pozycji, a nie na podstawie danych z tabeli zam\u00f3wie\u0144. Uwzgl\u0119dnij wy\u0142\u0105cznie zam\u00f3wienia o statusie <code>zrealizowane<\/code>. Poka\u017c klient\u00f3w, kt\u00f3rzy wydali \u0142\u0105cznie ponad 5000 z\u0142 i z\u0142o\u017cyli co najmniej 2 takie zam\u00f3wienia. Wy\u015bwietl imi\u0119, nazwisko, miasto, liczb\u0119 zam\u00f3wie\u0144, sum\u0119 zakup\u00f3w i \u015bredni\u0105 warto\u015b\u0107 zam\u00f3wienia. Posortuj wynik malej\u0105co wed\u0142ug sumy zakup\u00f3w.<\/p>\n<h3>\u0106wiczenie 9 \u2013 Analiza sprzeda\u017cy wed\u0142ug miesi\u0119cy<\/h3>\n<p>Dla ka\u017cdego miesi\u0105ca 2026 roku wy\u015bwietl liczb\u0119 zam\u00f3wie\u0144 zrealizowanych, \u0142\u0105czn\u0105 warto\u015b\u0107 ich pozycji oraz \u015bredni\u0105 warto\u015b\u0107 zam\u00f3wienia. Warto\u015b\u0107 zam\u00f3wienia oblicz na podstawie pozycji zam\u00f3wienia. Uwzgl\u0119dnij tylko zam\u00f3wienia o statusie <code>zrealizowane<\/code>. Poka\u017c miesi\u0105ce, w kt\u00f3rych zrealizowano co najmniej 3 zam\u00f3wienia, a \u0142\u0105czna warto\u015b\u0107 sprzeda\u017cy przekroczy\u0142a 8000 z\u0142. Posortuj wynik chronologicznie.<\/p>\n<h3>\u0106wiczenie 10 \u2013 Produkty kupowane przez wielu klient\u00f3w<\/h3>\n<p>Dla ka\u017cdego produktu wy\u015bwietl nazw\u0119, kategori\u0119, liczb\u0119 r\u00f3\u017cnych klient\u00f3w, kt\u00f3rzy go kupili, \u0142\u0105czn\u0105 liczb\u0119 sprzedanych sztuk oraz \u015bredni\u0105 cen\u0119 jednostkow\u0105 zapisan\u0105 w pozycjach zam\u00f3wie\u0144. Uwzgl\u0119dnij wy\u0142\u0105cznie zam\u00f3wienia zrealizowane lub wys\u0142ane. Poka\u017c produkty kupione przez co najmniej 3 r\u00f3\u017cnych klient\u00f3w, dla kt\u00f3rych \u0142\u0105czna liczba sprzedanych sztuk wynosi co najmniej 5. Wyniki posortuj malej\u0105co wed\u0142ug liczby r\u00f3\u017cnych klient\u00f3w, a nast\u0119pnie wed\u0142ug liczby sprzedanych sztuk.<\/p>\n<h3>\u0106wiczenie 11 \u2013 Por\u00f3wnanie typ\u00f3w klient\u00f3w<\/h3>\n<p>Por\u00f3wnaj klient\u00f3w indywidualnych i firmowych. Dla ka\u017cdego typu klienta wy\u015bwietl liczb\u0119 r\u00f3\u017cnych klient\u00f3w, liczb\u0119 zam\u00f3wie\u0144, liczb\u0119 zam\u00f3wie\u0144 zrealizowanych oraz \u0142\u0105czn\u0105 warto\u015b\u0107 pozycji w zam\u00f3wieniach zrealizowanych. Uwzgl\u0119dnij zam\u00f3wienia z okresu od 1 stycznia do 30 wrze\u015bnia 2026 roku. Poka\u017c tylko te typy klient\u00f3w, dla kt\u00f3rych liczba zam\u00f3wie\u0144 zrealizowanych wynosi co najmniej 10. Posortuj wynik malej\u0105co wed\u0142ug warto\u015bci sprzeda\u017cy.<\/p>\n<h3>\u0106wiczenie 12 \u2013 Kategorie o du\u017cej warto\u015bci sprzeda\u017cy<\/h3>\n<p>Dla ka\u017cdej kategorii oblicz \u0142\u0105czn\u0105 warto\u015b\u0107 sprzedanych produkt\u00f3w, liczb\u0119 r\u00f3\u017cnych produkt\u00f3w sprzedanych w tej kategorii oraz liczb\u0119 r\u00f3\u017cnych zam\u00f3wie\u0144, w kt\u00f3rych wyst\u0105pi\u0142y te produkty. Uwzgl\u0119dnij wy\u0142\u0105cznie zam\u00f3wienia zrealizowane. Poka\u017c kategorie, kt\u00f3rych warto\u015b\u0107 sprzeda\u017cy przekracza 10 000 z\u0142, a liczba r\u00f3\u017cnych zam\u00f3wie\u0144 jest wi\u0119ksza ni\u017c 5. Wyniki posortuj malej\u0105co wed\u0142ug warto\u015bci sprzeda\u017cy.<\/p>\n<h3>\u0106wiczenie 13 \u2013 Klienci kupuj\u0105cy w r\u00f3\u017cnych kategoriach<\/h3>\n<p>Dla ka\u017cdego klienta oblicz liczb\u0119 r\u00f3\u017cnych kategorii, w kt\u00f3rych kupowa\u0142 produkty, \u0142\u0105czn\u0105 liczb\u0119 zam\u00f3wie\u0144 zrealizowanych oraz \u0142\u0105czn\u0105 warto\u015b\u0107 zakup\u00f3w. Uwzgl\u0119dnij tylko klient\u00f3w, kt\u00f3rzy kupowali w co najmniej 3 r\u00f3\u017cnych kategoriach i z\u0142o\u017cyli co najmniej 2 zam\u00f3wienia zrealizowane. Wy\u015bwietl imi\u0119, nazwisko, miasto, liczb\u0119 kategorii, liczb\u0119 zam\u00f3wie\u0144 i warto\u015b\u0107 zakup\u00f3w. Posortuj wynik malej\u0105co wed\u0142ug liczby kategorii, a nast\u0119pnie wed\u0142ug warto\u015bci zakup\u00f3w.<\/p>\n<h3>\u0106wiczenie 14 \u2013 Analiza sprzeda\u017cy wed\u0142ug miasta i kategorii<\/h3>\n<p>Dla ka\u017cdej pary miasto klienta \u2013 kategoria produktu oblicz liczb\u0119 r\u00f3\u017cnych klient\u00f3w, liczb\u0119 r\u00f3\u017cnych zam\u00f3wie\u0144 oraz \u0142\u0105czn\u0105 warto\u015b\u0107 sprzedanych produkt\u00f3w. Uwzgl\u0119dnij tylko zam\u00f3wienia zrealizowane lub wys\u0142ane, z\u0142o\u017cone od 1 kwietnia do 30 wrze\u015bnia 2026 roku. Poka\u017c tylko te pary miasto \u2013 kategoria, dla kt\u00f3rych warto\u015b\u0107 sprzeda\u017cy przekracza 3000 z\u0142 i liczba r\u00f3\u017cnych klient\u00f3w jest wi\u0119ksza ni\u017c 1. Posortuj wynik malej\u0105co wed\u0142ug warto\u015bci sprzeda\u017cy, a nast\u0119pnie alfabetycznie wed\u0142ug miasta.<\/p>\n<h3>\u0106wiczenie 15 \u2013 Najwa\u017cniejsze produkty w poszczeg\u00f3lnych kategoriach<\/h3>\n<p>Dla ka\u017cdego produktu oblicz \u0142\u0105czn\u0105 warto\u015b\u0107 sprzeda\u017cy, \u0142\u0105czn\u0105 liczb\u0119 sprzedanych sztuk oraz liczb\u0119 r\u00f3\u017cnych klient\u00f3w, kt\u00f3rzy go kupili. Uwzgl\u0119dnij wy\u0142\u0105cznie zam\u00f3wienia zrealizowane. Nast\u0119pnie wy\u015bwietl tylko te produkty, kt\u00f3rych \u0142\u0105czna warto\u015b\u0107 sprzeda\u017cy przekracza 3000 z\u0142, a liczba r\u00f3\u017cnych klient\u00f3w wynosi co najmniej 2. Wynik ma zawiera\u0107 r\u00f3wnie\u017c nazw\u0119 kategorii. Posortuj go najpierw alfabetycznie wed\u0142ug kategorii, a w obr\u0119bie ka\u017cdej kategorii malej\u0105co wed\u0142ug warto\u015bci sprzeda\u017cy.<\/p>\n<h3>\u0106wiczenie 16 \u2013 Raport sprzeda\u017cy dla sklepu<\/h3>\n<p>Przygotuj raport pokazuj\u0105cy wyniki sprzeda\u017cy w podziale na miasto klienta i typ klienta. Dla ka\u017cdej takiej grupy wy\u015bwietl miasto, typ klienta, liczb\u0119 r\u00f3\u017cnych klient\u00f3w, liczb\u0119 zam\u00f3wie\u0144 zrealizowanych, \u0142\u0105czn\u0105 warto\u015b\u0107 sprzeda\u017cy, \u015bredni\u0105 warto\u015b\u0107 zam\u00f3wienia oraz liczb\u0119 r\u00f3\u017cnych kategorii produkt\u00f3w, kt\u00f3re pojawi\u0142y si\u0119 w tych zam\u00f3wieniach.<\/p>\n<p>Uwzgl\u0119dnij wy\u0142\u0105cznie zam\u00f3wienia zrealizowane w okresie od 1 kwietnia do 30 wrze\u015bnia 2026 roku. Warto\u015bci zam\u00f3wie\u0144 oblicz na podstawie pozycji zam\u00f3wie\u0144. Pozostaw w raporcie tylko te grupy, dla kt\u00f3rych liczba zam\u00f3wie\u0144 wynosi co najmniej 2, \u0142\u0105czna warto\u015b\u0107 sprzeda\u017cy przekracza 5000 z\u0142, a liczba r\u00f3\u017cnych kategorii jest wi\u0119ksza ni\u017c 1. Posortuj wynik malej\u0105co wed\u0142ug warto\u015bci sprzeda\u017cy, a nast\u0119pnie rosn\u0105co wed\u0142ug miasta i typu klienta.<\/p>","protected":false},"excerpt":{"rendered":"<p>Cel lekcji Ucze\u0144 potrafi: \u0142\u0105czy\u0107 dane z kilku tabel za pomoc\u0105 JOIN; tworzy\u0107 z\u0142o\u017cone warunki filtrowania z wykorzystaniem WHERE, AND, OR, NOTi LIKE; stosowa\u0107 funkcje agreguj\u0105ce COUNT(), SUM(), AVG(), MIN() i MAX() w zapytaniach \u0142\u0105cz\u0105cych tabele; grupowa\u0107 dane wed\u0142ug jednej lub kilku kolumn za pomoc\u0105 GROUP BY; filtrowa\u0107 wyniki grupowania za pomoc\u0105 HAVING; \u0142\u0105czy\u0107 warunki [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63,67,69,68],"tags":[],"class_list":["post-871","post","type-post","status-publish","format-standard","hentry","category-2p","category-4i","category-4p","category-4t"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Zaawansowane zapytania SQL \u2013 JOIN, WHERE, GROUP BY, HAVING i ORDER BY - Tomasz Sadowski<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zaawansowane zapytania SQL \u2013 JOIN, WHERE, GROUP BY, HAVING i ORDER BY - Tomasz Sadowski\" \/>\n<meta property=\"og:description\" content=\"Cel lekcji Ucze\u0144 potrafi: \u0142\u0105czy\u0107 dane z kilku tabel za pomoc\u0105 JOIN; tworzy\u0107 z\u0142o\u017cone warunki filtrowania z wykorzystaniem WHERE, AND, OR, NOTi LIKE; stosowa\u0107 funkcje agreguj\u0105ce COUNT(), SUM(), AVG(), MIN() i MAX() w zapytaniach \u0142\u0105cz\u0105cych tabele; grupowa\u0107 dane wed\u0142ug jednej lub kilku kolumn za pomoc\u0105 GROUP BY; filtrowa\u0107 wyniki grupowania za pomoc\u0105 HAVING; \u0142\u0105czy\u0107 warunki [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/\" \/>\n<meta property=\"og:site_name\" content=\"Tomasz Sadowski\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-27T10:32:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-27T10:32:29+00:00\" \/>\n<meta name=\"author\" content=\"tomek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"tomek\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/10\\\/27\\\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/10\\\/27\\\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\\\/\"},\"author\":{\"name\":\"tomek\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#\\\/schema\\\/person\\\/36b24d512631c581c15631842e605c6c\"},\"headline\":\"Zaawansowane zapytania SQL \u2013 JOIN, WHERE, GROUP BY, HAVING i ORDER BY\",\"datePublished\":\"2026-10-27T10:32:12+00:00\",\"dateModified\":\"2026-10-27T10:32:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/10\\\/27\\\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\\\/\"},\"wordCount\":2029,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#\\\/schema\\\/person\\\/36b24d512631c581c15631842e605c6c\"},\"articleSection\":[\"2P\",\"4I\",\"4P\",\"4T\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/10\\\/27\\\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/10\\\/27\\\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\\\/\",\"url\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/10\\\/27\\\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\\\/\",\"name\":\"Zaawansowane zapytania SQL \u2013 JOIN, WHERE, GROUP BY, HAVING i ORDER BY - Tomasz Sadowski\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#website\"},\"datePublished\":\"2026-10-27T10:32:12+00:00\",\"dateModified\":\"2026-10-27T10:32:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/10\\\/27\\\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/10\\\/27\\\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/10\\\/27\\\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Zaawansowane zapytania SQL \u2013 JOIN, WHERE, GROUP BY, HAVING i ORDER BY\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#website\",\"url\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/\",\"name\":\"Tomasz Sadowski Zaj\u0119cia\",\"description\":\"Zbi&oacute;r zaj\u0119\u0107 prowadzonych przez Tomasza Sadowskiego\",\"publisher\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#\\\/schema\\\/person\\\/36b24d512631c581c15631842e605c6c\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#\\\/schema\\\/person\\\/36b24d512631c581c15631842e605c6c\",\"name\":\"tomek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g\",\"caption\":\"tomek\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/zajecia.tsadowski.pl\"],\"url\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Zaawansowane zapytania SQL \u2013 JOIN, WHERE, GROUP BY, HAVING i ORDER BY - Tomasz Sadowski","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/","og_locale":"pl_PL","og_type":"article","og_title":"Zaawansowane zapytania SQL \u2013 JOIN, WHERE, GROUP BY, HAVING i ORDER BY - Tomasz Sadowski","og_description":"Cel lekcji Ucze\u0144 potrafi: \u0142\u0105czy\u0107 dane z kilku tabel za pomoc\u0105 JOIN; tworzy\u0107 z\u0142o\u017cone warunki filtrowania z wykorzystaniem WHERE, AND, OR, NOTi LIKE; stosowa\u0107 funkcje agreguj\u0105ce COUNT(), SUM(), AVG(), MIN() i MAX() w zapytaniach \u0142\u0105cz\u0105cych tabele; grupowa\u0107 dane wed\u0142ug jednej lub kilku kolumn za pomoc\u0105 GROUP BY; filtrowa\u0107 wyniki grupowania za pomoc\u0105 HAVING; \u0142\u0105czy\u0107 warunki [&hellip;]","og_url":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/","og_site_name":"Tomasz Sadowski","article_published_time":"2026-10-27T10:32:12+00:00","article_modified_time":"2026-10-27T10:32:29+00:00","author":"tomek","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"tomek","Szacowany czas czytania":"14 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/#article","isPartOf":{"@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/"},"author":{"name":"tomek","@id":"https:\/\/zajecia.tsadowski.pl\/#\/schema\/person\/36b24d512631c581c15631842e605c6c"},"headline":"Zaawansowane zapytania SQL \u2013 JOIN, WHERE, GROUP BY, HAVING i ORDER BY","datePublished":"2026-10-27T10:32:12+00:00","dateModified":"2026-10-27T10:32:29+00:00","mainEntityOfPage":{"@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/"},"wordCount":2029,"commentCount":0,"publisher":{"@id":"https:\/\/zajecia.tsadowski.pl\/#\/schema\/person\/36b24d512631c581c15631842e605c6c"},"articleSection":["2P","4I","4P","4T"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/","url":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/","name":"Zaawansowane zapytania SQL \u2013 JOIN, WHERE, GROUP BY, HAVING i ORDER BY - Tomasz Sadowski","isPartOf":{"@id":"https:\/\/zajecia.tsadowski.pl\/#website"},"datePublished":"2026-10-27T10:32:12+00:00","dateModified":"2026-10-27T10:32:29+00:00","breadcrumb":{"@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/10\/27\/zaawansowane-zapytania-sql-join-where-group-by-having-i-order-by\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/zajecia.tsadowski.pl\/"},{"@type":"ListItem","position":2,"name":"Zaawansowane zapytania SQL \u2013 JOIN, WHERE, GROUP BY, HAVING i ORDER BY"}]},{"@type":"WebSite","@id":"https:\/\/zajecia.tsadowski.pl\/#website","url":"https:\/\/zajecia.tsadowski.pl\/","name":"Tomasz Sadowski Zaj\u0119cia","description":"Zbi&oacute;r zaj\u0119\u0107 prowadzonych przez Tomasza Sadowskiego","publisher":{"@id":"https:\/\/zajecia.tsadowski.pl\/#\/schema\/person\/36b24d512631c581c15631842e605c6c"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zajecia.tsadowski.pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":["Person","Organization"],"@id":"https:\/\/zajecia.tsadowski.pl\/#\/schema\/person\/36b24d512631c581c15631842e605c6c","name":"tomek","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/secure.gravatar.com\/avatar\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g","caption":"tomek"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/b8e0f37f81c0ae3da08d93ced4d5638d67055786edc11d3357adce41e3a18825?s=96&d=mm&r=g"},"sameAs":["https:\/\/zajecia.tsadowski.pl"],"url":"https:\/\/zajecia.tsadowski.pl\/index.php\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/posts\/871","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/comments?post=871"}],"version-history":[{"count":2,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/posts\/871\/revisions"}],"predecessor-version":[{"id":873,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/posts\/871\/revisions\/873"}],"wp:attachment":[{"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/media?parent=871"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/categories?post=871"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/tags?post=871"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}