{"id":439,"date":"2026-09-28T01:22:30","date_gmt":"2026-09-28T00:22:30","guid":{"rendered":"https:\/\/zajecia.tsadowski.pl\/?p=439"},"modified":"2026-10-12T13:28:45","modified_gmt":"2026-10-12T12:28:45","slug":"grupowanie-danych-w-sql-group-by-having-4","status":"publish","type":"post","link":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/","title":{"rendered":"Grupowanie danych w SQL (GROUP BY, HAVING)"},"content":{"rendered":"<p><strong>Grupowanie danych<\/strong> to jedna z kluczowych operacji, kt\u00f3re pozwalaj\u0105 na analiz\u0119 zestaw\u00f3w danych w oparciu o okre\u015blone warto\u015bci w kolumnach.\nW SQL grupowanie realizowane jest za pomoc\u0105 klauzuli <strong>GROUP BY<\/strong>.\nPozwala ona <strong>zgrupowa\u0107 wiersze<\/strong>, kt\u00f3re maj\u0105 te same warto\u015bci w jednej lub kilku kolumnach, i zastosowa\u0107 <strong>funkcje agreguj\u0105ce<\/strong> (np. COUNT(), SUM(), AVG(), MIN(), MAX()) do grup danych.<\/p>\n<hr \/>\n<h2>Struktura zapytania z grupowaniem<\/h2>\n<pre><code class=\"lang-sql language-sql sql\">SELECT kolumna1, funkcja_agreguj\u0105ca(kolumna2)\nFROM tabela\nWHERE warunek\nGROUP BY kolumna1\nHAVING warunek_na_grupie;<\/code><\/pre>\n<ul>\n<li><strong>GROUP BY<\/strong> \u2013 grupuje dane wed\u0142ug kolumny lub zestawu kolumn.<\/li>\n<li><strong>Funkcje agreguj\u0105ce<\/strong> \u2013 zliczaj\u0105, sumuj\u0105, u\u015bredniaj\u0105, zwracaj\u0105 minimaln\u0105 lub maksymaln\u0105 warto\u015b\u0107 dla ka\u017cdej grupy.<\/li>\n<li><strong>HAVING<\/strong> \u2013 u\u017cywana do filtrowania wynik\u00f3w na poziomie grupy (podobna do WHERE, ale dzia\u0142a po zgrupowaniu danych).<\/li>\n<\/ul>\n<hr \/>\n<h2>Przyk\u0142ady<\/h2>\n<h3>Grupowanie danych z funkcj\u0105 COUNT()<\/h3>\n<pre><code class=\"lang-sql language-sql sql\">SELECT RokStudiow, COUNT(*) AS LiczbaStudentow\nFROM Studenci\nGROUP BY RokStudiow;<\/code><\/pre>\n<p>To zapytanie zwraca liczb\u0119 student\u00f3w na ka\u017cdym roku studi\u00f3w.\nDane s\u0105 zgrupowane wed\u0142ug kolumny <strong>RokStudiow<\/strong>.<\/p>\n<hr \/>\n<h3>Grupowanie danych z funkcj\u0105 AVG()<\/h3>\n<pre><code class=\"lang-sql language-sql sql\">SELECT KodKursu, AVG(Ocena) AS SredniaOcena\nFROM Oceny\nGROUP BY KodKursu;<\/code><\/pre>\n<p>W tym zapytaniu \u015brednia ocena dla ka\u017cdego kursu jest obliczana i grupowana wed\u0142ug kolumny <strong>KodKursu<\/strong>.<\/p>\n<hr \/>\n<h2>Wa\u017cne informacje<\/h2>\n<ul>\n<li>Klauzula <strong>GROUP BY<\/strong> powinna zawiera\u0107 kolumny, kt\u00f3re <strong>nie s\u0105 u\u017cywane w funkcjach agreguj\u0105cych<\/strong>.<\/li>\n<li>Klauzula <strong>HAVING<\/strong> s\u0142u\u017cy do filtrowania wynik\u00f3w po zgrupowaniu danych.<\/li>\n<li>Kolumny w <strong>SELECT<\/strong>, kt\u00f3re nie s\u0105 funkcjami agreguj\u0105cymi, <strong>musz\u0105 znale\u017a\u0107 si\u0119 w klauzuli GROUP BY<\/strong>.<\/li>\n<\/ul>\n<p><strong>Funkcje agreguj\u0105ce u\u017cywane z GROUP BY:<\/strong><\/p>\n<ul>\n<li>COUNT() \u2013 zlicza liczb\u0119 wierszy,<\/li>\n<li>SUM() \u2013 sumuje warto\u015bci,<\/li>\n<li>AVG() \u2013 oblicza \u015bredni\u0105,<\/li>\n<li>MIN() \u2013 znajduje najmniejsz\u0105 warto\u015b\u0107,<\/li>\n<li>MAX() \u2013 znajduje najwi\u0119ksz\u0105 warto\u015b\u0107.<\/li>\n<\/ul>\n<hr \/>\n<h2>Dane do importu<\/h2>\n<pre><code class=\"lang-sql language-sql sql\">CREATE TABLE Pracownicy (\n    ID INT AUTO_INCREMENT PRIMARY KEY,\n    Imie VARCHAR(50),\n    Nazwisko VARCHAR(50),\n    Funkcja VARCHAR(50),\n    Dzial VARCHAR(50),\n    Wynagrodzenie DECIMAL(10,2),\n    DataZatrudnienia DATE\n);\n\nINSERT INTO Pracownicy (Imie, Nazwisko, Funkcja, Dzial, Wynagrodzenie, DataZatrudnienia)\nVALUES \n(&#039;Jan&#039;, &#039;Kowalski&#039;, &#039;Specjalista&#039;, &#039;IT&#039;, 6000.00, &#039;2018-05-01&#039;),\n(&#039;Anna&#039;, &#039;Nowak&#039;, &#039;Starszy Specjalista&#039;, &#039;HR&#039;, 7000.00, &#039;2019-07-12&#039;),\n(&#039;Tomasz&#039;, &#039;Wisniewski&#039;, &#039;Specjalista&#039;, &#039;Finanse&#039;, 5500.00, &#039;2021-02-20&#039;),\n(&#039;Marta&#039;, &#039;Zielinska&#039;, &#039;Kierownik&#039;, &#039;IT&#039;, 9000.00, &#039;2017-03-14&#039;),\n(&#039;Piotr&#039;, &#039;Wojcik&#039;, &#039;Asystent&#039;, &#039;HR&#039;, 4000.00, &#039;2020-11-30&#039;),\n(&#039;Kasia&#039;, &#039;Kowalczyk&#039;, &#039;Specjalista&#039;, &#039;Marketing&#039;, 6200.00, &#039;2019-01-09&#039;),\n(&#039;Magda&#039;, &#039;Lewandowska&#039;, &#039;Starszy Specjalista&#039;, &#039;Finanse&#039;, 7500.00, &#039;2016-04-05&#039;),\n(&#039;Karol&#039;, &#039;Dabrowski&#039;, &#039;Kierownik&#039;, &#039;Marketing&#039;, 8500.00, &#039;2015-08-23&#039;),\n(&#039;Ewa&#039;, &#039;Pawlak&#039;, &#039;Asystent&#039;, &#039;IT&#039;, 4200.00, &#039;2022-06-15&#039;),\n(&#039;Rafal&#039;, &#039;Sikorski&#039;, &#039;Specjalista&#039;, &#039;Finanse&#039;, 5800.00, &#039;2023-01-02&#039;);\n\nCREATE TABLE Studenci (\n    ID INT AUTO_INCREMENT PRIMARY KEY,\n    Imie VARCHAR(50),\n    Nazwisko VARCHAR(50),\n    RokStudiow INT );\n\nINSERT INTO Studenci (Imie, Nazwisko, RokStudiow)\nVALUES \n(&#039;Jan&#039;, &#039;Kowalski&#039;, 1),\n(&#039;Anna&#039;, &#039;Nowak&#039;, 2),\n(&#039;Tomasz&#039;, &#039;Wisniewski&#039;, 3),\n(&#039;Marta&#039;, &#039;Zielinska&#039;, 1),\n(&#039;Piotr&#039;, &#039;Wojcik&#039;, 4),\n(&#039;Kasia&#039;, &#039;Kowalczyk&#039;, 2),\n(&#039;Magda&#039;, &#039;Lewandowska&#039;, 3),\n(&#039;Karol&#039;, &#039;Dabrowski&#039;, 5),\n(&#039;Ewa&#039;, &#039;Pawlak&#039;, 2),\n(&#039;Rafal&#039;, &#039;Sikorski&#039;, 4);\n\nCREATE TABLE Kursy (\n    KodKursu VARCHAR(10) PRIMARY KEY,\n    NazwaKursu VARCHAR(100),\n    LiczbaGodzin INT,\n    Wykladowca VARCHAR(50),\n    Dzial VARCHAR(50)\n);\n\nINSERT INTO Kursy (KodKursu, NazwaKursu, LiczbaGodzin, Wykladowca, Dzial)\nVALUES \n(&#039;CS101&#039;, &#039;Wprowadzenie do programowania&#039;, 30, &#039;Jan Kowalski&#039;, &#039;IT&#039;),\n(&#039;CS102&#039;, &#039;Algorytmy i struktury danych&#039;, 40, &#039;Anna Nowak&#039;, &#039;IT&#039;),\n(&#039;CS103&#039;, &#039;Bazy danych&#039;, 45, &#039;Tomasz Wisniewski&#039;, &#039;IT&#039;),\n(&#039;CS104&#039;, &#039;Sieci komputerowe&#039;, 35, &#039;Jan Kowalski&#039;, &#039;IT&#039;),\n(&#039;CS105&#039;, &#039;Programowanie w Java&#039;, 50, &#039;Piotr Wojcik&#039;, &#039;IT&#039;),\n(&#039;CS106&#039;, &#039;Zaawansowane techniki programowania&#039;, 60, &#039;Jan Kowalski&#039;, &#039;IT&#039;),\n(&#039;CS107&#039;, &#039;Podstawy systemow operacyjnych&#039;, 25, &#039;Magda Lewandowska&#039;, &#039;E&#039;),\n(&#039;CS108&#039;, &#039;Zarzadzanie projektami IT&#039;, 30, &#039;Karol Dabrowski&#039;, &#039;E&#039;),\n(&#039;CS109&#039;, &#039;Programowanie w Python&#039;, 40, &#039;Ewa Pawlak&#039;, &#039;IT&#039;),\n(&#039;CS110&#039;, &#039;Cyberbezpieczenstwo&#039;, 35, &#039;Piotr Wojcik&#039;, &#039;IT&#039;);\n\nCREATE TABLE Oceny (\n    ID INT AUTO_INCREMENT PRIMARY KEY,\n    StudentID INT,\n    KodKursu VARCHAR(10),\n    Ocena DECIMAL(3,2)\n);\n\nINSERT INTO Oceny (StudentID, KodKursu, Ocena)\nVALUES \n(1, &#039;CS101&#039;, 4.5),\n(2, &#039;CS102&#039;, 3.0),\n(3, &#039;CS103&#039;, 5.0),\n(3, &#039;CS104&#039;, 4.0),\n(3, &#039;CS105&#039;, 3.5),\n(2, &#039;CS106&#039;, 4.2),\n(1, &#039;CS107&#039;, 5.0),\n(1, &#039;CS108&#039;, 3.8),\n(9, &#039;CS109&#039;, 4.9),\n(10, &#039;CS110&#039;, 4.0);\n\nCREATE TABLE Zakupy (\n    ID INT AUTO_INCREMENT PRIMARY KEY,\n    Produkt VARCHAR(100),\n    Kategoria VARCHAR(50),\n    Cena DECIMAL(10,2),\n    DataZakupu DATE\n);\n\nINSERT INTO Zakupy (Produkt, Kategoria, Cena, DataZakupu)\nVALUES \n(&#039;Laptop&#039;, &#039;Elektronika&#039;, 4500.00, &#039;2023-01-05&#039;),\n(&#039;Monitor&#039;, &#039;Elektronika&#039;, 1200.00, &#039;2023-02-10&#039;),\n(&#039;Drukarka&#039;, &#039;Elektronika&#039;, 800.00, &#039;2022-12-15&#039;),\n(&#039;Biurko&#039;, &#039;Meble&#039;, 600.00, &#039;2022-10-01&#039;),\n(&#039;Krzeslo&#039;, &#039;Meble&#039;, 400.00, &#039;2022-09-12&#039;),\n(&#039;Telewizor&#039;, &#039;Elektronika&#039;, 3000.00, &#039;2023-03-08&#039;),\n(&#039;Smartfon&#039;, &#039;Elektronika&#039;, 2000.00, &#039;2023-05-20&#039;),\n(&#039;Klawiatura&#039;, &#039;Akcesoria&#039;, 150.00, &#039;2023-04-12&#039;),\n(&#039;Myszka&#039;, &#039;Akcesoria&#039;, 100.00, &#039;2023-06-25&#039;),\n(&#039;Tablet&#039;, &#039;Elektronika&#039;, 2500.00, &#039;2023-07-01&#039;);<\/code><\/pre>\n<hr \/>\n<h2>\u0106wiczenia<\/h2>\n<h3>\u0106wiczenie 1<\/h3>\n<ul>\n<li>\n<p>Policz liczb\u0119 pracownik\u00f3w na ka\u017cdym stanowisku w tabeli <strong>Pracownicy<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Policz liczb\u0119 pracownik\u00f3w zatrudnionych po 2019 roku na ka\u017cdym stanowisku.<\/p>\n<\/li>\n<\/ul>\n<hr \/>\n<h3>\u0106wiczenie 2<\/h3>\n<ul>\n<li>Oblicz sum\u0119 wynagrodze\u0144 dla ka\u017cdego dzia\u0142u w tabeli <strong>Pracownicy<\/strong>, ale wy\u015bwietl tylko dzia\u0142y, w kt\u00f3rych suma wynagrodze\u0144 przekracza 15 000 z\u0142.<\/li>\n<li>Oblicz liczb\u0119 kurs\u00f3w, kt\u00f3re maj\u0105 wi\u0119cej ni\u017c 30 godzin, grupuj\u0105c wyniki wed\u0142ug wyk\u0142adowcy.<\/li>\n<\/ul>\n<hr \/>\n<h3>\u0106wiczenie 3<\/h3>\n<ul>\n<li>Oblicz minimaln\u0105 liczb\u0119 godzin kurs\u00f3w dla ka\u017cdego dzia\u0142u w tabeli <strong>Kursy<\/strong>, ale wy\u015bwietl tylko te dzia\u0142y, gdzie minimalna liczba godzin jest wi\u0119ksza ni\u017c 25.<\/li>\n<li>Policz liczb\u0119 student\u00f3w w ka\u017cdym roku studi\u00f3w, ale poka\u017c tylko te lata, gdzie liczba student\u00f3w jest wi\u0119ksza ni\u017c 1.<\/li>\n<\/ul>\n<hr \/>\n<h3>\u0106wiczenie 4<\/h3>\n<ul>\n<li>Oblicz maksymaln\u0105 cen\u0119 produkt\u00f3w kupionych po 2023-01-01, grupuj\u0105c wyniki wed\u0142ug kategorii produkt\u00f3w.<\/li>\n<li>Oblicz \u015bredni\u0105 ocen\u0119 dla ka\u017cdego studenta, ale wy\u015bwietl tylko tych student\u00f3w, kt\u00f3rzy maj\u0105 wi\u0119cej ni\u017c 1 ocen\u0119.<\/li>\n<\/ul>\n<hr \/>\n<h3>\u0106wiczenie 5<\/h3>\n<ul>\n<li>Oblicz sum\u0119 liczby godzin dla kurs\u00f3w, kt\u00f3re maj\u0105 wi\u0119cej ni\u017c 30 godzin, grupuj\u0105c wyniki wed\u0142ug dzia\u0142u i wyk\u0142adowcy.<\/li>\n<li>Oblicz \u015bredni\u0105 liczb\u0119 godzin kurs\u00f3w dla ka\u017cdego wyk\u0142adowcy w tabeli <strong>Kursy<\/strong>, ale tylko dla tych wyk\u0142adowc\u00f3w, kt\u00f3rzy maj\u0105 wi\u0119cej ni\u017c 1 kurs.<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Grupowanie danych to jedna z kluczowych operacji, kt\u00f3re pozwalaj\u0105 na analiz\u0119 zestaw\u00f3w danych w oparciu o okre\u015blone warto\u015bci w kolumnach. W SQL grupowanie realizowane jest za pomoc\u0105 klauzuli GROUP BY. Pozwala ona zgrupowa\u0107 wiersze, kt\u00f3re maj\u0105 te same warto\u015bci w jednej lub kilku kolumnach, i zastosowa\u0107 funkcje agreguj\u0105ce (np. COUNT(), SUM(), AVG(), MIN(), MAX()) do [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63,64,67,68],"tags":[],"class_list":["post-439","post","type-post","status-publish","format-standard","hentry","category-2p","category-3i","category-4i","category-4t"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Grupowanie danych w SQL (GROUP BY, HAVING) - 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\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Grupowanie danych w SQL (GROUP BY, HAVING) - Tomasz Sadowski\" \/>\n<meta property=\"og:description\" content=\"Grupowanie danych to jedna z kluczowych operacji, kt\u00f3re pozwalaj\u0105 na analiz\u0119 zestaw\u00f3w danych w oparciu o okre\u015blone warto\u015bci w kolumnach. W SQL grupowanie realizowane jest za pomoc\u0105 klauzuli GROUP BY. Pozwala ona zgrupowa\u0107 wiersze, kt\u00f3re maj\u0105 te same warto\u015bci w jednej lub kilku kolumnach, i zastosowa\u0107 funkcje agreguj\u0105ce (np. COUNT(), SUM(), AVG(), MIN(), MAX()) do [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/\" \/>\n<meta property=\"og:site_name\" content=\"Tomasz Sadowski\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-28T00:22:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-12T12:28:45+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=\"5 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\\\/09\\\/28\\\/grupowanie-danych-w-sql-group-by-having-4\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/09\\\/28\\\/grupowanie-danych-w-sql-group-by-having-4\\\/\"},\"author\":{\"name\":\"tomek\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#\\\/schema\\\/person\\\/36b24d512631c581c15631842e605c6c\"},\"headline\":\"Grupowanie danych w SQL (GROUP BY, HAVING)\",\"datePublished\":\"2026-09-28T00:22:30+00:00\",\"dateModified\":\"2026-10-12T12:28:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/09\\\/28\\\/grupowanie-danych-w-sql-group-by-having-4\\\/\"},\"wordCount\":834,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#\\\/schema\\\/person\\\/36b24d512631c581c15631842e605c6c\"},\"articleSection\":[\"2P\",\"3I\",\"4I\",\"4T\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/09\\\/28\\\/grupowanie-danych-w-sql-group-by-having-4\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/09\\\/28\\\/grupowanie-danych-w-sql-group-by-having-4\\\/\",\"url\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/09\\\/28\\\/grupowanie-danych-w-sql-group-by-having-4\\\/\",\"name\":\"Grupowanie danych w SQL (GROUP BY, HAVING) - Tomasz Sadowski\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/#website\"},\"datePublished\":\"2026-09-28T00:22:30+00:00\",\"dateModified\":\"2026-10-12T12:28:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/09\\\/28\\\/grupowanie-danych-w-sql-group-by-having-4\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/09\\\/28\\\/grupowanie-danych-w-sql-group-by-having-4\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/index.php\\\/2026\\\/09\\\/28\\\/grupowanie-danych-w-sql-group-by-having-4\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/zajecia.tsadowski.pl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Grupowanie danych w SQL (GROUP BY, HAVING)\"}]},{\"@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":"Grupowanie danych w SQL (GROUP BY, HAVING) - 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\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/","og_locale":"pl_PL","og_type":"article","og_title":"Grupowanie danych w SQL (GROUP BY, HAVING) - Tomasz Sadowski","og_description":"Grupowanie danych to jedna z kluczowych operacji, kt\u00f3re pozwalaj\u0105 na analiz\u0119 zestaw\u00f3w danych w oparciu o okre\u015blone warto\u015bci w kolumnach. W SQL grupowanie realizowane jest za pomoc\u0105 klauzuli GROUP BY. Pozwala ona zgrupowa\u0107 wiersze, kt\u00f3re maj\u0105 te same warto\u015bci w jednej lub kilku kolumnach, i zastosowa\u0107 funkcje agreguj\u0105ce (np. COUNT(), SUM(), AVG(), MIN(), MAX()) do [&hellip;]","og_url":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/","og_site_name":"Tomasz Sadowski","article_published_time":"2026-09-28T00:22:30+00:00","article_modified_time":"2026-10-12T12:28:45+00:00","author":"tomek","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"tomek","Szacowany czas czytania":"5 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/#article","isPartOf":{"@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/"},"author":{"name":"tomek","@id":"https:\/\/zajecia.tsadowski.pl\/#\/schema\/person\/36b24d512631c581c15631842e605c6c"},"headline":"Grupowanie danych w SQL (GROUP BY, HAVING)","datePublished":"2026-09-28T00:22:30+00:00","dateModified":"2026-10-12T12:28:45+00:00","mainEntityOfPage":{"@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/"},"wordCount":834,"commentCount":0,"publisher":{"@id":"https:\/\/zajecia.tsadowski.pl\/#\/schema\/person\/36b24d512631c581c15631842e605c6c"},"articleSection":["2P","3I","4I","4T"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/","url":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/","name":"Grupowanie danych w SQL (GROUP BY, HAVING) - Tomasz Sadowski","isPartOf":{"@id":"https:\/\/zajecia.tsadowski.pl\/#website"},"datePublished":"2026-09-28T00:22:30+00:00","dateModified":"2026-10-12T12:28:45+00:00","breadcrumb":{"@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zajecia.tsadowski.pl\/index.php\/2026\/09\/28\/grupowanie-danych-w-sql-group-by-having-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/zajecia.tsadowski.pl\/"},{"@type":"ListItem","position":2,"name":"Grupowanie danych w SQL (GROUP BY, HAVING)"}]},{"@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\/439","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=439"}],"version-history":[{"count":4,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/posts\/439\/revisions"}],"predecessor-version":[{"id":454,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/posts\/439\/revisions\/454"}],"wp:attachment":[{"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/media?parent=439"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/categories?post=439"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zajecia.tsadowski.pl\/index.php\/wp-json\/wp\/v2\/tags?post=439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}