SQL GROUP BY – Agregujte záznamy

GROUP BY klauzuli používáme v SQL k seskupování záznamů. Ve většině případů jde o situaci, kdy potřebujeme udělat nějakou agregační operaci v tabulce (součet tržeb, počet záznamů, průměr, apod).

Pořadí klauzule v SQL skriptu

  1. SELECT
  2. FROM
  3. WHERE
  4. GROUP BY
  5. HAVING
  6. ORDER BY

Syntaxe klauzule GROUP BY:

SELECT [Sloupec1], [Sloupec2], AgregacniFunkce([Sloupec3]) AS Alias
FROM Tabulka
WHERE Podminka
GROUP BY Sloupec1, Sloupec2

Pokud použijeme agragační funkci, tak většinou tuto klauzuli použijeme. Výjimkou jsou situace, kdy do agregační funkce ještě zahrneme operátor OVER( PARTITION BY| ORDER BY|ROW|RANGE), ten řadíme mezi pokročilejší znalosti a proto s ním zatím nemusíme ztrácet čas. Pro začátečníky budiž pravidlem, že je klauzule je povinná, pokud v SELECT existuje nějaká agregační funkce.

Příklad použití GROUP BY

Tabulka [FactInternetSales] má spoustu polí jak je vidět z obrázku, ale my budeme pracovat pouze se 2-ma poli:

  • Datum [OrderDate]
  • Částka [SalesAmount]
SQL Server GROUP BY příklad

Příklad

Budeme chtít agregovat částku podle datumů a výsledek poté seřadit sestupně. Použijeme k tomu:

  • agregační funkci SUM() v klauzuli SELECT
  • GROUP BY
  • ORDER BY

SELECT [OrderDate] AS Datum
,SUM([SalesAmount]) AS Soucet
FROM [AdventureWorksDW2012].[dbo].[FactInternetSales]
GROUP BY [OrderDate]
ORDER BY [OrderDate] DESC

a výsledek:

SQL GROUP BY

Výsledek

Kdybychom klauzuli vynechali, tak by výsledkem byla chyba

“Column ‘AdventureWorksDW2012.dbo.FactInternetSales.OrderDate’ is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.”

Chybová hláška nás upozorňuje, že není sloupec OrderDate obsažen v klauzuli

GROUP BY chybový stav

Chybová hláška

Kompletní dokumentaci ke klauzuli můžeme najít v dokumentaci Microsoftu

5/5 - (4 votes)
Rubrika: Základy SQL

O Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako data engineer freelancer. Během cca 10 let jsem zde shromáždil přes 600 IT case studies, průvodců, návodů a tipů určených zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Data Engineeringu, korporátních financí a reportingu. Zaměřuji se především na Microsoft technologie (on-prem i cloud) a různé synergické efekty v rámci jejich produktového portfolia pro dataře a finanční profesionály. Věnuji se také dalším platformám a významným hráčům z oblasti open source technologií. 🔥 Pokud vám tento článek pomohl, ocením referenci na vašem webu nebo zmínku v komunitě. A mám pro vás ještě tip: řešíte-li nějaký zapeklitý Excel problém, přihlašte se do naší Excel Facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse ».

1 thoughts on “SQL GROUP BY – Agregujte záznamy

  1. Vít H.

    Děkuji za to, že někdo si dal tu práci a sepsal to a já to tím pádem mohl pochopit.

Leave a Reply

Your email address will not be published. Required fields are marked *