Klazule GROUP BY v SQL slouzi k ziskani pouze unikatnich radku. Musite zadat pouze sloupce, podle kterych to chcete vyhodnotit – a to stejne jak za GROUP BY tak za SELECT. Jedina vyjimka je pro agregacni funkce(SUM,AVG, aj.) . To ale vubec nevadi, protoze vam to vrati (pri spravnem dotazu) jen unikatni radky, takze pak nejakou hodnotu primarniho klice ci jine dulezite hodnoty ziskate uz snadno.
Porad je to rychlejsi nez ziskavat vice radku a pak to delat v serverove casti kodu, kdy jeste hrozi riziko, ze udelate chybu a v nejhorsi variante prijdete o data. Takze pro priklad, mame tuto tabulku: A tento SQL prikaz:
1 2 3 |
use SqlServerLearn; SELECT c1,c2,MAX(c4) FROM test4 GROUP BY c1,c2 GO |
A ten nam vrati tento vystup:
Jak vidite, vratili se nam pouze radky, ktere maji jedinecne kombinace sloupcu c1,c2 a pozor, nevratil se nam prvni radek, ale az druhy, protoze jsme na c4 aplikovali funkci MAX. Jeste vam ukazu co by vam SQL Server vypsal, kdyby jste se pokusili vypsat sloupec, ktery neni uveden v GROUP BY:
1 2 3 |
use SqlServerLearn; SELECT c1,c2,c3,MAX(c4) FROM test4 GROUP BY c1,c2 GO |