{"id":879,"date":"2026-11-03T11:09:51","date_gmt":"2026-11-03T10:09:51","guid":{"rendered":"https:\/\/zajecia.tsadowski.pl\/?p=879"},"modified":"2026-11-03T11:09:51","modified_gmt":"2026-11-03T10:09:51","slug":"podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan","status":"publish","type":"post","link":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/","title":{"rendered":"Podzapytania SQL \u2013 filtrowanie i analiza danych na podstawie innych zapyta\u0144"},"content":{"rendered":"<h2>Cel lekcji<\/h2>\n<p>Ucze\u0144 potrafi:<\/p>\n<ul>\n<li>wyja\u015bni\u0107, czym jest podzapytanie SQL;<\/li>\n<li>stosowa\u0107 podzapytania w klauzuli <code>WHERE<\/code> oraz <code>HAVING<\/code>;<\/li>\n<li>wykorzystywa\u0107 podzapytania zwracaj\u0105ce pojedyncz\u0105 warto\u015b\u0107 oraz wiele rekord\u00f3w;<\/li>\n<li>stosowa\u0107 operatory <code>IN<\/code> i <code>NOT IN<\/code>;<\/li>\n<li>tworzy\u0107 podzapytania skorelowane;<\/li>\n<li>\u0142\u0105czy\u0107 podzapytania z <code>JOIN<\/code>, <code>GROUP BY<\/code> i funkcjami agreguj\u0105cymi;<\/li>\n<li>rozwi\u0105zywa\u0107 problemy, w kt\u00f3rych warunek zapytania zale\u017cy od wyniku innego zapytania.<\/li>\n<\/ul>\n<h1>1. Podzapytania SQL<\/h1>\n<p>Podzapytanie to zapytanie SQL umieszczone wewn\u0105trz innego zapytania. Wynik podzapytania jest wykorzystywany przez zapytanie zewn\u0119trzne, np. do filtrowania danych.<\/p>\n<p>Podzapytania mog\u0105 zwraca\u0107:<\/p>\n<ul>\n<li>jedn\u0105 warto\u015b\u0107, np. \u015bredni\u0105 cen\u0119 produkt\u00f3w;<\/li>\n<li>jedn\u0105 kolumn\u0119 zawieraj\u0105c\u0105 wiele warto\u015bci, np. identyfikatory klient\u00f3w;<\/li>\n<li>wiele kolumn i rekord\u00f3w, kt\u00f3re mog\u0105 by\u0107 wykorzystane jako tabela tymczasowa.<\/li>\n<\/ul>\n<p>W tej lekcji b\u0119dziemy pracowa\u0107 na bazie danych sklepu internetowego.<\/p>\n<h2>1.1. Podzapytanie zwracaj\u0105ce jedn\u0105 warto\u015b\u0107<\/h2>\n<p>Za\u0142\u00f3\u017cmy, \u017ce chcemy wy\u015bwietli\u0107 produkty dro\u017csze od \u015bredniej ceny wszystkich produkt\u00f3w.<\/p>\n<p>Najpierw mo\u017cna obliczy\u0107 \u015bredni\u0105 cen\u0119:<\/p>\n<pre><code class=\"lang-sql language-sql sql\">SELECT AVG(cena)\nFROM produkty;<\/code><\/pre>\n<p>Wynikiem jest jedna warto\u015b\u0107 liczbowa.<\/p>\n<p>Mo\u017cemy wykorzysta\u0107 j\u0105 w innym zapytaniu:<\/p>\n<pre><code class=\"lang-sql language-sql sql\">SELECT nazwa, cena\nFROM produkty\nWHERE cena &gt; (\n    SELECT AVG(cena)\n    FROM produkty\n);<\/code><\/pre>\n<p>W tym przyk\u0142adzie:<\/p>\n<ol>\n<li>Podzapytanie oblicza \u015bredni\u0105 cen\u0119 produkt\u00f3w.<\/li>\n<li>Zapytanie zewn\u0119trzne pobiera dane z tabeli <code>produkty<\/code>.<\/li>\n<li>Warunek <code>WHERE<\/code> wybiera produkty dro\u017csze od obliczonej \u015bredniej.<\/li>\n<\/ol>\n<p>Nie trzeba r\u0119cznie przepisywa\u0107 wyniku pierwszego zapytania do drugiego.<\/p>\n<p>Podzapytanie znajduje si\u0119 w nawiasach.<\/p>\n<h2>1.2. Podzapytanie zwracaj\u0105ce wiele warto\u015bci<\/h2>\n<p>Podzapytanie mo\u017ce zwraca\u0107 wiele rekord\u00f3w.<\/p>\n<p>Przyk\u0142adowo chcemy wy\u015bwietli\u0107 klient\u00f3w, kt\u00f3rzy z\u0142o\u017cyli zam\u00f3wienia.<\/p>\n<pre><code class=\"lang-sql language-sql sql\">SELECT imie, nazwisko\nFROM klienci\nWHERE id_klienta IN (\n    SELECT id_klienta\n    FROM zamowienia\n);<\/code><\/pre>\n<p>Podzapytanie pobiera identyfikatory klient\u00f3w wyst\u0119puj\u0105cych w tabeli <code>zamowienia<\/code>.<\/p>\n<p>Zapytanie zewn\u0119trzne wy\u015bwietla dane klient\u00f3w, kt\u00f3rych identyfikator znajduje si\u0119 w wyniku podzapytania.<\/p>\n<p>W tym przypadku podzapytanie nie musi zwraca\u0107 jednej warto\u015bci. Mo\u017ce zwr\u00f3ci\u0107 wiele identyfikator\u00f3w.<\/p>\n<h1>2. Operator IN<\/h1>\n<p>Operator <code>IN<\/code> sprawdza, czy dana warto\u015b\u0107 znajduje si\u0119 w zbiorze warto\u015bci.<\/p>\n<p>Mo\u017cna go stosowa\u0107 z list\u0105 warto\u015bci:<\/p>\n<pre><code class=\"lang-sql language-sql sql\">SELECT nazwa\nFROM produkty\nWHERE id_kategorii IN (1, 3, 4);<\/code><\/pre>\n<p>Mo\u017cna r\u00f3wnie\u017c wykorzysta\u0107 podzapytanie:<\/p>\n<pre><code class=\"lang-sql language-sql sql\">SELECT nazwa\nFROM produkty\nWHERE id_kategorii IN (\n    SELECT id_kategorii\n    FROM kategorie\n    WHERE nazwa IN (&#039;Gaming&#039;, &#039;Komputery&#039;)\n);<\/code><\/pre>\n<p>W tym przyk\u0142adzie podzapytanie pobiera identyfikatory kategorii o nazwach <code>Gaming<\/code> i <code>Komputery<\/code>.<\/p>\n<p>Zapytanie zewn\u0119trzne wy\u015bwietla produkty nale\u017c\u0105ce do tych kategorii.<\/p>\n<p>Operator <code>IN<\/code> jest szczeg\u00f3lnie przydatny wtedy, gdy nie znamy wcze\u015bniej identyfikator\u00f3w rekord\u00f3w, kt\u00f3re chcemy wyszuka\u0107.<\/p>\n<h1>3. Operator NOT IN<\/h1>\n<p>Operator <code>NOT IN<\/code> dzia\u0142a odwrotnie ni\u017c <code>IN<\/code>.<\/p>\n<p>Sprawdza, czy dana warto\u015b\u0107 nie znajduje si\u0119 w zbiorze warto\u015bci.<\/p>\n<p>Przyk\u0142ad:<\/p>\n<pre><code class=\"lang-sql language-sql sql\">SELECT nazwa\nFROM produkty\nWHERE id_kategorii NOT IN (\n    SELECT id_kategorii\n    FROM kategorie\n    WHERE nazwa = &#039;Gaming&#039;\n);<\/code><\/pre>\n<p>Zapytanie wy\u015bwietli produkty, kt\u00f3re nie nale\u017c\u0105 do kategorii Gaming.<\/p>\n<p>Operator <code>NOT IN<\/code> mo\u017ce by\u0107 u\u017cywany zar\u00f3wno z list\u0105 warto\u015bci, jak i z podzapytaniem.<\/p>\n<p><strong>Wa\u017cne:<\/strong> je\u017celi podzapytanie u\u017cywane z <code>NOT IN<\/code> zwr\u00f3ci warto\u015b\u0107 <code>NULL<\/code>, wynik mo\u017ce by\u0107 inny od oczekiwanego. Dlatego nale\u017cy kontrolowa\u0107, czy kolumna wykorzystywana w podzapytaniu nie zawiera warto\u015bci <code>NULL<\/code>.<\/p>\n<h1>4. Podzapytania skorelowane<\/h1>\n<p>Podzapytanie skorelowane korzysta z danych zapytania zewn\u0119trznego.<\/p>\n<p>Przyk\u0142ad:<\/p>\n<pre><code class=\"lang-sql language-sql sql\">SELECT nazwa, cena, id_kategorii\nFROM produkty p\nWHERE cena &gt; (\n    SELECT AVG(cena)\n    FROM produkty p2\n    WHERE p2.id_kategorii = p.id_kategorii\n);<\/code><\/pre>\n<p>Zapytanie wy\u015bwietla produkty dro\u017csze od \u015bredniej ceny produkt\u00f3w w ich kategorii.<\/p>\n<p>W podzapytaniu wyst\u0119puje warunek:<\/p>\n<pre><code class=\"lang-sql language-sql sql\">p2.id_kategorii = p.id_kategorii<\/code><\/pre>\n<p>Warto\u015b\u0107 <code>p.id_kategorii<\/code> pochodzi z zapytania zewn\u0119trznego.<\/p>\n<p>Dla ka\u017cdego produktu podzapytanie oblicza \u015bredni\u0105 cen\u0119 produkt\u00f3w nale\u017c\u0105cych do tej samej kategorii.<\/p>\n<p>To w\u0142a\u015bnie zale\u017cno\u015b\u0107 podzapytania od danych zapytania zewn\u0119trznego nazywamy korelacj\u0105.<\/p>\n<h2>4.1. Podzapytanie skorelowane z IN<\/h2>\n<p>Podzapytania skorelowane mo\u017cna r\u00f3wnie\u017c wykorzystywa\u0107 z operatorem <code>IN<\/code>.<\/p>\n<p>Przyk\u0142ad:<\/p>\n<pre><code class=\"lang-sql language-sql sql\">SELECT imie, nazwisko\nFROM klienci k\nWHERE id_klienta IN (\n    SELECT z.id_klienta\n    FROM zamowienia z\n    JOIN pozycje_zamowien pz\n        ON pz.id_zamowienia = z.id_zamowienia\n    WHERE z.id_klienta = k.id_klienta\n      AND z.status = &#039;zrealizowane&#039;\n);<\/code><\/pre>\n<p>Zapytanie wy\u015bwietla klient\u00f3w, kt\u00f3rzy maj\u0105 przynajmniej jedno zrealizowane zam\u00f3wienie.<\/p>\n<p>Podzapytanie korzysta z identyfikatora klienta pobranego przez zapytanie zewn\u0119trzne.<\/p>\n<h1>5. Podzapytania w HAVING<\/h1>\n<p>Podzapytania mo\u017cna stosowa\u0107 r\u00f3wnie\u017c w klauzuli <code>HAVING<\/code>.<\/p>\n<p>Przyk\u0142ad:<\/p>\n<pre><code class=\"lang-sql language-sql sql\">SELECT id_klienta, COUNT(*) AS liczba_zamowien\nFROM zamowienia\nGROUP BY id_klienta\nHAVING COUNT(*) &gt; (\n    SELECT AVG(liczba)\n    FROM (\n        SELECT COUNT(*) AS liczba\n        FROM zamowienia\n        GROUP BY id_klienta\n    ) AS statystyki\n);<\/code><\/pre>\n<p>Zapytanie wy\u015bwietla klient\u00f3w, kt\u00f3rzy z\u0142o\u017cyli wi\u0119cej zam\u00f3wie\u0144 ni\u017c \u015brednia liczba zam\u00f3wie\u0144 przypadaj\u0105ca na klienta posiadaj\u0105cego zam\u00f3wienia.<\/p>\n<p>W tym przyk\u0142adzie:<\/p>\n<ol>\n<li>Najbardziej wewn\u0119trzne zapytanie liczy zam\u00f3wienia ka\u017cdego klienta.<\/li>\n<li>Kolejne podzapytanie oblicza \u015bredni\u0105 z otrzymanych wynik\u00f3w.<\/li>\n<li>Zapytanie zewn\u0119trzne wy\u015bwietla klient\u00f3w, kt\u00f3rych liczba zam\u00f3wie\u0144 przekracza obliczon\u0105 \u015bredni\u0105.<\/li>\n<\/ol>\n<p>Podzapytanie w <code>HAVING<\/code> pozwala por\u00f3wnywa\u0107 wyniki grupowania z innymi warto\u015bciami obliczonymi przez SQL.<\/p>\n<h1>6. Przygotowanie bazy danych<\/h1>\n<p>Podczas lekcji b\u0119dziemy pracowa\u0107 na bazie danych przedstawiaj\u0105cej sklep internetowy.<\/p>\n<p>Baza zawiera:<\/p>\n<ul>\n<li>klient\u00f3w;<\/li>\n<li>kategorie produkt\u00f3w;<\/li>\n<li>produkty;<\/li>\n<li>zam\u00f3wienia;<\/li>\n<li>pozycje zam\u00f3wie\u0144.<\/li>\n<\/ul>\n<p>Uruchom ca\u0142y skrypt w MySQL lub phpMyAdmin.<\/p>\n<pre><code class=\"lang-sql language-sql sql\">DROP DATABASE IF EXISTS sklep_podzapytania;\nCREATE DATABASE sklep_podzapytania\nCHARACTER SET utf8mb4\nCOLLATE utf8mb4_unicode_ci;\n\nUSE sklep_podzapytania;\n\nCREATE TABLE klienci (\n    id_klienta INT PRIMARY KEY,\n    imie VARCHAR(40),\n    nazwisko VARCHAR(50),\n    miasto VARCHAR(50),\n    typ_klienta VARCHAR(20)\n);\n\nCREATE TABLE kategorie (\n    id_kategorii INT PRIMARY KEY,\n    nazwa VARCHAR(50)\n);\n\nCREATE TABLE produkty (\n    id_produktu INT PRIMARY KEY,\n    nazwa VARCHAR(100),\n    id_kategorii INT,\n    cena DECIMAL(10,2),\n    stan_magazynowy INT,\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,\n    data_zamowienia DATE,\n    status VARCHAR(20),\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,\n    id_produktu INT,\n    ilosc INT,\n    cena_sztuki DECIMAL(10,2),\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 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\nINSERT INTO kategorie 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\nINSERT INTO produkty VALUES\n(1, &#039;Laptop Lenovo&#039;, 1, 3500, 12),\n(2, &#039;Laptop Dell&#039;, 1, 4200, 8),\n(3, &#039;Monitor 27 cali&#039;, 2, 1100, 18),\n(4, &#039;Klawiatura mechaniczna&#039;, 2, 350, 25),\n(5, &#039;Mysz Logitech&#039;, 2, 120, 50),\n(6, &#039;Sluchawki gamingowe&#039;, 3, 280, 30),\n(7, &#039;Konsola Xbox&#039;, 3, 2200, 10),\n(8, &#039;Konsola PlayStation&#039;, 3, 2500, 6),\n(9, &#039;Smartfon Samsung&#039;, 4, 2800, 20),\n(10, &#039;Smartfon Xiaomi&#039;, 4, 1900, 15),\n(11, &#039;Ekspres do kawy&#039;, 5, 1600, 9),\n(12, &#039;Odkurzacz&#039;, 5, 850, 14),\n(13, &#039;Router TP-Link&#039;, 2, 320, 19),\n(14, &#039;Kamera internetowa&#039;, 2, 250, 35),\n(15, &#039;Tablet Samsung&#039;, 1, 1800, 11),\n(16, &#039;Glosnik Bluetooth&#039;, 2, 450, 0),\n(17, &#039;Drukarka HP&#039;, 1, 750, 16),\n(18, &#039;Smartwatch Apple&#039;, 4, 1700, 4),\n(19, &#039;Blender Bosch&#039;, 5, 420, 13),\n(20, &#039;Mikrofon USB&#039;, 2, 390, 22);\n\nINSERT INTO zamowienia VALUES\n(1, 1, &#039;2026-01-10&#039;, &#039;zrealizowane&#039;),\n(2, 2, &#039;2026-01-15&#039;, &#039;zrealizowane&#039;),\n(3, 3, &#039;2026-01-20&#039;, &#039;wyslane&#039;),\n(4, 1, &#039;2026-02-05&#039;, &#039;zrealizowane&#039;),\n(5, 4, &#039;2026-02-10&#039;, &#039;anulowane&#039;),\n(6, 5, &#039;2026-02-15&#039;, &#039;zrealizowane&#039;),\n(7, 6, &#039;2026-02-20&#039;, &#039;wyslane&#039;),\n(8, 7, &#039;2026-03-01&#039;, &#039;zrealizowane&#039;),\n(9, 8, &#039;2026-03-05&#039;, &#039;zrealizowane&#039;),\n(10, 9, &#039;2026-03-10&#039;, &#039;oczekujace&#039;),\n(11, 10, &#039;2026-03-15&#039;, &#039;zrealizowane&#039;),\n(12, 2, &#039;2026-03-20&#039;, &#039;wyslane&#039;),\n(13, 3, &#039;2026-04-01&#039;, &#039;zrealizowane&#039;),\n(14, 5, &#039;2026-04-05&#039;, &#039;anulowane&#039;),\n(15, 11, &#039;2026-04-10&#039;, &#039;zrealizowane&#039;),\n(16, 12, &#039;2026-04-15&#039;, &#039;oczekujace&#039;),\n(17, 4, &#039;2026-04-20&#039;, &#039;zrealizowane&#039;),\n(18, 6, &#039;2026-05-01&#039;, &#039;zrealizowane&#039;),\n(19, 7, &#039;2026-05-05&#039;, &#039;wyslane&#039;),\n(20, 8, &#039;2026-05-10&#039;, &#039;zrealizowane&#039;),\n(21, 1, &#039;2026-05-15&#039;, &#039;zrealizowane&#039;),\n(22, 9, &#039;2026-05-20&#039;, &#039;anulowane&#039;),\n(23, 10, &#039;2026-06-01&#039;, &#039;zrealizowane&#039;),\n(24, 11, &#039;2026-06-05&#039;, &#039;wyslane&#039;),\n(25, 12, &#039;2026-06-10&#039;, &#039;zrealizowane&#039;),\n(26, 3, &#039;2026-06-15&#039;, &#039;zrealizowane&#039;),\n(27, 4, &#039;2026-06-20&#039;, &#039;oczekujace&#039;),\n(28, 5, &#039;2026-07-01&#039;, &#039;zrealizowane&#039;),\n(29, 6, &#039;2026-07-05&#039;, &#039;zrealizowane&#039;),\n(30, 7, &#039;2026-07-10&#039;, &#039;wyslane&#039;),\n(31, 8, &#039;2026-07-15&#039;, &#039;zrealizowane&#039;),\n(32, 9, &#039;2026-07-20&#039;, &#039;zrealizowane&#039;),\n(33, 10, &#039;2026-08-01&#039;, &#039;anulowane&#039;),\n(34, 11, &#039;2026-08-05&#039;, &#039;zrealizowane&#039;),\n(35, 12, &#039;2026-08-10&#039;, &#039;wyslane&#039;),\n(36, 1, &#039;2026-08-15&#039;, &#039;zrealizowane&#039;);\n\nINSERT INTO pozycje_zamowien VALUES\n(1, 1, 1, 1, 3500),\n(2, 1, 5, 1, 120),\n(3, 2, 3, 2, 1100),\n(4, 2, 4, 1, 350),\n(5, 3, 2, 1, 4200),\n(6, 3, 9, 1, 2800),\n(7, 4, 7, 1, 2200),\n(8, 4, 6, 2, 280),\n(9, 5, 9, 1, 2800),\n(10, 5, 18, 1, 1700),\n(11, 6, 12, 2, 850),\n(12, 6, 19, 1, 420),\n(13, 7, 10, 2, 1900),\n(14, 8, 13, 2, 320),\n(15, 8, 14, 1, 250),\n(16, 9, 6, 3, 280),\n(17, 9, 8, 1, 2500),\n(18, 10, 9, 1, 2800),\n(19, 11, 2, 1, 4200),\n(20, 11, 4, 1, 350),\n(21, 12, 15, 1, 1800),\n(22, 12, 5, 2, 120),\n(23, 13, 1, 1, 3500),\n(24, 13, 3, 1, 1100),\n(25, 14, 9, 1, 2800),\n(26, 14, 10, 1, 1900),\n(27, 15, 17, 2, 750),\n(28, 15, 14, 2, 250),\n(29, 16, 18, 1, 1700),\n(30, 17, 2, 1, 4200),\n(31, 17, 3, 1, 1100),\n(32, 17, 4, 2, 350),\n(33, 18, 7, 1, 2200),\n(34, 18, 6, 1, 280),\n(35, 19, 13, 3, 320),\n(36, 19, 20, 2, 390),\n(37, 20, 12, 1, 850),\n(38, 20, 19, 2, 420),\n(39, 21, 1, 1, 3500),\n(40, 21, 15, 1, 1800),\n(41, 22, 8, 1, 2500),\n(42, 22, 6, 2, 280),\n(43, 23, 10, 2, 1900),\n(44, 23, 5, 3, 120),\n(45, 24, 17, 1, 750),\n(46, 24, 13, 2, 320),\n(47, 25, 11, 1, 1600),\n(48, 25, 19, 2, 420),\n(49, 26, 2, 1, 4200),\n(50, 26, 9, 1, 2800),\n(51, 27, 3, 2, 1100),\n(52, 27, 14, 1, 250),\n(53, 28, 7, 1, 2200),\n(54, 28, 6, 2, 280),\n(55, 29, 10, 1, 1900),\n(56, 29, 18, 1, 1700),\n(57, 30, 1, 1, 3500),\n(58, 30, 4, 2, 350),\n(59, 31, 12, 1, 850),\n(60, 31, 5, 2, 120),\n(61, 32, 9, 1, 2800),\n(62, 32, 13, 2, 320),\n(63, 33, 2, 1, 4200),\n(64, 33, 20, 2, 390),\n(65, 34, 15, 2, 1800),\n(66, 34, 14, 1, 250),\n(67, 35, 8, 1, 2500),\n(68, 35, 6, 2, 280),\n(69, 36, 1, 1, 3500),\n(70, 36, 3, 2, 1100);<\/code><\/pre>\n<h1>7. \u0106wiczenia<\/h1>\n<p>Wykonaj wszystkie zadania samodzielnie.<\/p>\n<p>Do ka\u017cdego \u0107wiczenia przygotuj osobne zapytanie SQL. Nie zmieniaj danych w bazie.<\/p>\n<h2>\u0106wiczenie 1 \u2013 Produkty dro\u017csze od \u015bredniej<\/h2>\n<p>Wy\u015bwietl nazwy, ceny i nazwy kategorii produkt\u00f3w, kt\u00f3rych cena jest wi\u0119ksza od \u015bredniej ceny wszystkich produkt\u00f3w w sklepie.<\/p>\n<p>Wyniki posortuj malej\u0105co wed\u0142ug ceny.<\/p>\n<p>Wykorzystaj podzapytanie zwracaj\u0105ce pojedyncz\u0105 warto\u015b\u0107.<\/p>\n<h2>\u0106wiczenie 2 \u2013 Klienci, kt\u00f3rzy z\u0142o\u017cyli zam\u00f3wienia<\/h2>\n<p>Wy\u015bwietl imiona, nazwiska i miasta klient\u00f3w, kt\u00f3rzy z\u0142o\u017cyli przynajmniej jedno zam\u00f3wienie o statusie <code>zrealizowane<\/code>.<\/p>\n<p>Nie wy\u015bwietlaj tych samych klient\u00f3w wi\u0119cej ni\u017c jeden raz.<\/p>\n<p>Posortuj wyniki alfabetycznie wed\u0142ug nazwiska.<\/p>\n<p>Wykorzystaj podzapytanie oraz operator <code>IN<\/code>.<\/p>\n<h2>\u0106wiczenie 3 \u2013 Produkty, kt\u00f3rych nikt nie kupi\u0142<\/h2>\n<p>Wy\u015bwietl nazwy i ceny produkt\u00f3w, kt\u00f3re nie wyst\u0105pi\u0142y w \u017cadnej pozycji zam\u00f3wienia.<\/p>\n<p>Posortuj wynik alfabetycznie wed\u0142ug nazwy produktu.<\/p>\n<p>Wykorzystaj podzapytanie z operatorem <code>NOT IN<\/code>.<\/p>\n<h2>\u0106wiczenie 4 \u2013 Produkty dro\u017csze od najdro\u017cszego produktu z kategorii Gaming<\/h2>\n<p>Wy\u015bwietl nazwy, ceny i nazwy kategorii produkt\u00f3w, kt\u00f3rych cena jest wi\u0119ksza od najwy\u017cszej ceny produktu nale\u017c\u0105cego do kategorii Gaming.<\/p>\n<p>Nie wy\u015bwietlaj produkt\u00f3w z kategorii Gaming.<\/p>\n<p>Wyniki posortuj malej\u0105co wed\u0142ug ceny.<\/p>\n<p>Wykorzystaj podzapytanie zwracaj\u0105ce pojedyncz\u0105 warto\u015b\u0107 oraz funkcj\u0119 <code>MAX()<\/code>.<\/p>\n<h2>\u0106wiczenie 5 \u2013 Klienci, kt\u00f3rzy kupowali w r\u00f3\u017cnych kategoriach<\/h2>\n<p>Wy\u015bwietl imiona, nazwiska i miasta klient\u00f3w, kt\u00f3rzy kupili produkty nale\u017c\u0105ce do co najmniej 3 r\u00f3\u017cnych kategorii.<\/p>\n<p>Uwzgl\u0119dnij wy\u0142\u0105cznie zam\u00f3wienia o statusie <code>zrealizowane<\/code>.<\/p>\n<p>Wyniki posortuj alfabetycznie wed\u0142ug nazwiska.<\/p>\n<p>Wykorzystaj podzapytanie, grupowanie danych i operator <code>IN<\/code>.<\/p>\n<h2>\u0106wiczenie 6 \u2013 Produkty dro\u017csze od \u015bredniej ceny w swojej kategorii<\/h2>\n<p>Wy\u015bwietl nazwy, ceny i nazwy kategorii produkt\u00f3w, kt\u00f3rych cena jest wi\u0119ksza od \u015bredniej ceny produkt\u00f3w nale\u017c\u0105cych do tej samej kategorii.<\/p>\n<p>Wyniki posortuj alfabetycznie wed\u0142ug kategorii, a nast\u0119pnie malej\u0105co wed\u0142ug ceny.<\/p>\n<p>Wykorzystaj podzapytanie skorelowane.<\/p>\n<h2>\u0106wiczenie 7 \u2013 Klienci, kt\u00f3rzy wydali wi\u0119cej ni\u017c \u015brednia<\/h2>\n<p>Wy\u015bwietl imiona, nazwiska i miasta klient\u00f3w, kt\u00f3rych \u0142\u0105czna warto\u015b\u0107 zrealizowanych zam\u00f3wie\u0144 jest wi\u0119ksza od \u015bredniej warto\u015bci zrealizowanych zam\u00f3wie\u0144 wszystkich klient\u00f3w.<\/p>\n<p>Warto\u015b\u0107 ka\u017cdego zam\u00f3wienia oblicz na podstawie jego pozycji.<\/p>\n<p>Uwzgl\u0119dnij tylko klient\u00f3w, kt\u00f3rzy z\u0142o\u017cyli przynajmniej jedno zam\u00f3wienie zrealizowane.<\/p>\n<p>Wyniki posortuj malej\u0105co wed\u0142ug \u0142\u0105cznej warto\u015bci zakup\u00f3w.<\/p>\n<p>Wykorzystaj podzapytania, <code>GROUP BY<\/code> oraz <code>HAVING<\/code>.<\/p>\n<h2>\u0106wiczenie 8 \u2013 Analiza klient\u00f3w i kategorii<\/h2>\n<p>Przygotuj raport pokazuj\u0105cy klient\u00f3w, kt\u00f3rzy kupowali produkty z kategorii, w kt\u00f3rych \u0142\u0105czna warto\u015b\u0107 sprzeda\u017cy jest wi\u0119ksza od \u015bredniej warto\u015bci sprzeda\u017cy wszystkich kategorii.<\/p>\n<p>Uwzgl\u0119dnij wy\u0142\u0105cznie zam\u00f3wienia zrealizowane.<\/p>\n<p>Wynik powinien zawiera\u0107:<\/p>\n<ul>\n<li>imi\u0119 i nazwisko klienta;<\/li>\n<li>nazw\u0119 kategorii;<\/li>\n<li>liczb\u0119 r\u00f3\u017cnych zam\u00f3wie\u0144 klienta w tej kategorii;<\/li>\n<li>\u0142\u0105czn\u0105 warto\u015b\u0107 zakup\u00f3w klienta w tej kategorii;<\/li>\n<li>\u0142\u0105czn\u0105 warto\u015b\u0107 sprzeda\u017cy ca\u0142ej kategorii.<\/li>\n<\/ul>\n<p>Wy\u015bwietl tylko te pary klient \u2013 kategoria, dla kt\u00f3rych warto\u015b\u0107 zakup\u00f3w klienta jest wi\u0119ksza ni\u017c 1000 z\u0142.<\/p>\n<p>Posortuj wynik malej\u0105co wed\u0142ug warto\u015bci zakup\u00f3w klienta, a nast\u0119pnie alfabetycznie wed\u0142ug kategorii.<\/p>\n<p>Wykorzystaj podzapytania, <code>JOIN<\/code>, <code>GROUP BY<\/code> i <code>HAVING<\/code>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Cel lekcji Ucze\u0144 potrafi: wyja\u015bni\u0107, czym jest podzapytanie SQL; stosowa\u0107 podzapytania w klauzuli WHERE oraz HAVING; wykorzystywa\u0107 podzapytania zwracaj\u0105ce pojedyncz\u0105 warto\u015b\u0107 oraz wiele rekord\u00f3w; stosowa\u0107 operatory IN i NOT IN; tworzy\u0107 podzapytania skorelowane; \u0142\u0105czy\u0107 podzapytania z JOIN, GROUP BY i funkcjami agreguj\u0105cymi; rozwi\u0105zywa\u0107 problemy, w kt\u00f3rych warunek zapytania zale\u017cy od wyniku innego zapytania. 1. Podzapytania [&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,68],"tags":[],"class_list":["post-879","post","type-post","status-publish","format-standard","hentry","category-2p","category-4i","category-4t"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Podzapytania SQL \u2013 filtrowanie i analiza danych na podstawie innych zapyta\u0144 - 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\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Podzapytania SQL \u2013 filtrowanie i analiza danych na podstawie innych zapyta\u0144 - Tomasz Sadowski\" \/>\n<meta property=\"og:description\" content=\"Cel lekcji Ucze\u0144 potrafi: wyja\u015bni\u0107, czym jest podzapytanie SQL; stosowa\u0107 podzapytania w klauzuli WHERE oraz HAVING; wykorzystywa\u0107 podzapytania zwracaj\u0105ce pojedyncz\u0105 warto\u015b\u0107 oraz wiele rekord\u00f3w; stosowa\u0107 operatory IN i NOT IN; tworzy\u0107 podzapytania skorelowane; \u0142\u0105czy\u0107 podzapytania z JOIN, GROUP BY i funkcjami agreguj\u0105cymi; rozwi\u0105zywa\u0107 problemy, w kt\u00f3rych warunek zapytania zale\u017cy od wyniku innego zapytania. 1. Podzapytania [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/\" \/>\n<meta property=\"og:site_name\" content=\"Tomasz Sadowski\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-03T10:09:51+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<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/11\\\/03\\\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/11\\\/03\\\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\\\/\"},\"author\":{\"name\":\"tomek\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#\\\/schema\\\/person\\\/36b24d512631c581c15631842e605c6c\"},\"headline\":\"Podzapytania SQL \u2013 filtrowanie i analiza danych na podstawie innych zapyta\u0144\",\"datePublished\":\"2026-11-03T10:09:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/11\\\/03\\\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\\\/\"},\"wordCount\":1761,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#\\\/schema\\\/person\\\/36b24d512631c581c15631842e605c6c\"},\"articleSection\":[\"2P\",\"4I\",\"4T\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/11\\\/03\\\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/11\\\/03\\\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\\\/\",\"url\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/11\\\/03\\\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\\\/\",\"name\":\"Podzapytania SQL \u2013 filtrowanie i analiza danych na podstawie innych zapyta\u0144 - Tomasz Sadowski\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#website\"},\"datePublished\":\"2026-11-03T10:09:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/11\\\/03\\\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/11\\\/03\\\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/11\\\/03\\\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Podzapytania SQL \u2013 filtrowanie i analiza danych na podstawie innych zapyta\u0144\"}]},{\"@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":"Podzapytania SQL \u2013 filtrowanie i analiza danych na podstawie innych zapyta\u0144 - 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\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/","og_locale":"pl_PL","og_type":"article","og_title":"Podzapytania SQL \u2013 filtrowanie i analiza danych na podstawie innych zapyta\u0144 - Tomasz Sadowski","og_description":"Cel lekcji Ucze\u0144 potrafi: wyja\u015bni\u0107, czym jest podzapytanie SQL; stosowa\u0107 podzapytania w klauzuli WHERE oraz HAVING; wykorzystywa\u0107 podzapytania zwracaj\u0105ce pojedyncz\u0105 warto\u015b\u0107 oraz wiele rekord\u00f3w; stosowa\u0107 operatory IN i NOT IN; tworzy\u0107 podzapytania skorelowane; \u0142\u0105czy\u0107 podzapytania z JOIN, GROUP BY i funkcjami agreguj\u0105cymi; rozwi\u0105zywa\u0107 problemy, w kt\u00f3rych warunek zapytania zale\u017cy od wyniku innego zapytania. 1. Podzapytania [&hellip;]","og_url":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/","og_site_name":"Tomasz Sadowski","article_published_time":"2026-11-03T10:09:51+00:00","author":"tomek","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"tomek"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/#article","isPartOf":{"@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/"},"author":{"name":"tomek","@id":"https:\/\/zajecia.tsadowski.pl\/#\/schema\/person\/36b24d512631c581c15631842e605c6c"},"headline":"Podzapytania SQL \u2013 filtrowanie i analiza danych na podstawie innych zapyta\u0144","datePublished":"2026-11-03T10:09:51+00:00","mainEntityOfPage":{"@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/"},"wordCount":1761,"commentCount":0,"publisher":{"@id":"https:\/\/zajecia.tsadowski.pl\/#\/schema\/person\/36b24d512631c581c15631842e605c6c"},"articleSection":["2P","4I","4T"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/","url":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/","name":"Podzapytania SQL \u2013 filtrowanie i analiza danych na podstawie innych zapyta\u0144 - Tomasz Sadowski","isPartOf":{"@id":"https:\/\/zajecia.tsadowski.pl\/#website"},"datePublished":"2026-11-03T10:09:51+00:00","breadcrumb":{"@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/11\/03\/podzapytania-sql-filtrowanie-i-analiza-danych-na-podstawie-innych-zapytan\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/zajecia.tsadowski.pl\/"},{"@type":"ListItem","position":2,"name":"Podzapytania SQL \u2013 filtrowanie i analiza danych na podstawie innych zapyta\u0144"}]},{"@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\/879","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=879"}],"version-history":[{"count":1,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/posts\/879\/revisions"}],"predecessor-version":[{"id":880,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/posts\/879\/revisions\/880"}],"wp:attachment":[{"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/media?parent=879"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/categories?post=879"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/tags?post=879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}