SQL GROUP BY – Agregujte záznamy

Poslední aktualizace:

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).

1) Pořadí v SQL skriptu

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

2) Syntaxe 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.

3) Příklad:

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

SQL GROUP BY – Agregujte záznamy
5 (100%) 2 vote[s]

Honza Zedníček

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích společnosti Kentico, s.r.o v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval v několika bankách na pozicích finanční controller a manažer. Po práci se měním na vášnivého hráče tenisu, šachu a ochutnávače dobrých rumů. Mým velké štěstím, koníčkem a někdy stresorem se před 3 lety stal syn Kubíček. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Přidejte si mě na LinkedIn nebo se subscribněte na RSS kanál

Rubrika: Základy SQL

About Honza Zedníček

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích společnosti Kentico, s.r.o v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval v několika bankách na pozicích finanční controller a manažer. Po práci se měním na vášnivého hráče tenisu, šachu a ochutnávače dobrých rumů. Mým velké štěstím, koníčkem a někdy stresorem se před 3 lety stal syn Kubíček. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Přidejte si mě na LinkedIn nebo se subscribněte na RSS kanál

Napsat komentář

Vaše emailová adresa nebude zveřejněna.

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..