GROUP BY
Máme tabulku článků a u každého z nich je mj. uložen i rok, kdy byl napsán. Chceme získat přehled toho, kolik článků bylo napsáno který rok. SELECT rok,Count(*) FROM clanky GROUP BY rok;
Výstupem by mohlo být např.: +------+----------+ | rok | Count(*) | +------+----------+ | 2006 | 7 | | 2007 | 15 | | 2008 | 22 | +------+----------+ Další vlastnostiGROUP BY a agregační funkceSouvisející informace naleznete také v článku Agregační funkce.
Použití HAVINGSouvisející informace naleznete také v článku HAVING.
Pokud chceme výpis s WITH ROLLUPNěkolik málo databázových systémů (jako např. MySQL) podporuje navíc konstrukci Pro výše uvedený příklad by tedy dotaz SELECT rok,Count(*) FROM clanky GROUP BY rok WITH ROLLUP;
vygeneroval výstup podobný tomuto: +------+----------+ | rok | Count(*) | +------+----------+ | 2006 | 7 | | 2007 | 15 | | 2008 | 22 | | NULL | 44 | +------+----------+ Hodnota NULL v posledním řádky zde tedy reprezentuje souhrnný údaj pro všechny roky. Agregovaných sloupců nebo výrazů z nich může být i víc – v tom případě do výstupu výběru budou jako NULL začleněny souhrnné hodnoty pro sloupce v opačném pořadí, než které bylo uvedeno za klauzulí |