Group By v SQL Serveru

⚠️ Pozor: obrázky z tohoto příspěvku se ztratily při výpadku v roce 2016. Chybějící obrázky nahradí automaticky vtipným placeholderem plugin Broken Image Placeholder.

Klauzule GROUP BY v SQL slouží k získání pouze unikátních řádků. Musíte zadat pouze sloupce, podle kterých to chcete vyhodnotit – a to stejně jak za GROUP BY tak za SELECT. Jediná výjimka je pro agregační funkce(SUM,AVG, aj.) . To ale vůbec nevadí, protože vám to vrátí (při správném dotazu) jen unikátní řádky, takže pak nějakou hodnotu primárního klíče či jiné důležité hodnoty získáte už snadno.

Pořád je to rychlejší než získávat více řádků a pak to dělat v serverové části kódu, kdy ještě hrozí riziko, že uděláte chybu a v nejhorší variantě přijdete o data. Takže pro příklad, máme tuto tabulku: Zdrojova tabulka Group By A tento SQL příkaz:

SQL
use SqlServerLearn;
SELECT c1,c2,MAX(c4) FROM test4 GROUP BY c1,c2
GO

A ten nám vrátí tento výstup:
Vystup SQL prikazu Group By
Jak vidíte, vrátily se nám pouze řádky, které mají jedinečné kombinace sloupců c1,c2 a pozor, nevrátil se nám první řádek, ale až druhý, protože jsme na c4 aplikovali funkci MAX. Ještě vám ukážu, co by vám SQL Server vypsal, kdybyste se pokusili vypsat sloupec, který není uveden v GROUP BY:

SQL
use SqlServerLearn;
SELECT c1,c2,c3,MAX(c4) FROM test4 GROUP BY c1,c2
GO


Chyba zadani Group By
Tohle už nepotřebuje žádný komentář.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *