Práce se sloupci v agregačních dotazů
Při vytváření agregačních dotazů Dotaz a zobrazit nástroje Designer z určitých předpokladů, takže jej můžete vytvořit platný dotaz.Například Jestliže vytváříte agregační dotaz a označíte sloupec jako výstupní, dotaz a Návrhář zobrazení automaticky provede sloupec součástí klauzule GROUP by tak, aby se nepokusili zobrazit v souhrnu obsah jednotlivého řádku.
Pomocí Seskupit podle
Dotaz a Návrhář zobrazení používá následující pokyny pro práci se sloupci:
Zvolte možnost Seskupit podle nebo přidat do dotazu agregační funkci, jsou všechny sloupce označené jako výstupní nebo použité k řazení automaticky přidány do klauzule GROUP by.Sloupce nejsou automaticky přidáni do klauzule GROUP by v případě, že jsou již součástí agregační funkci.
Pokud nechcete, aby se zejména sloupec do klauzule GROUP by, ručně změnit jeho výběrem jiné možnosti skupiny ve sloupci kritéria podokna.Však dotaz a Návrhář zobrazení nezabrání můžete zvolit, výsledkem dotazu, který nelze spustit.
Pokud ručně přidat výstupní sloupec dotazu na agregační funkci v obou kritérií nebo podokna SQL dotazu a zobrazení Návrhář dotazu automaticky neodstraní ostatní výstupní sloupce.Proto musí odstranit zbývající sloupce z výstupu dotazu nebo jejich součástí klauzule GROUP by nebo v agregační funkci.
Zadáte-li podmínku vyhledávání do sloupce Kritéria podokna filtru dotazu a Návrhář zobrazení postupuje takto:
Pokud Group není zobrazen sloupec mřížky (protože jste ještě neurčili agregační dotaz), je podmínka vyhledávání umístěna do klauzule WHERE.
Pokud jste již v agregačním dotazu a vybrali jste možnost kde v Group sloupec, je podmínka vyhledávání umístěna do klauzule WHERE.
Pokud Group sloupec obsahuje jinou hodnotu než kde, je podmínka vyhledávání umístěna do klauzule HAVING.
Pomocí klauzule HAVING a kde doložky
Následující principy popisují, jak lze odkazovat sloupci v agregačním dotazu v podmínkách vyhledávání.Obecně lze použít sloupec v podmínce vyhledávání, filtrování řádků, které mají být sumarizována (klauzule WHERE) nebo určit, které seskupené výsledky se zobrazí v konečném výstupu (klauzule HAVING).
Jednotlivé datové sloupce se mohou objevit v buď WHERE nebo HAVING v závislosti na jejich použití jinde v dotazu.
Pokud klauzule slouží k výběru podskupiny řádků určených ke shrnutí a seskupení a je proto použita před vlastním seskupením.Proto můžete data sloupce v klauzuli WHERE i v případě, že není součástí klauzule GROUP by nebo v agregační funkci obsažena.Následující příkaz například vybere všechny knihy, které více než $10,00 nákladů a vypočítá průměrnou cenu:
SELECT AVG(price) FROM titles WHERE price > 10
Pokud vytvoříte podmínku vyhledávání, která zahrnuje sloupce se také používá v klauzuli GROUP by nebo v agregační funkci, je podmínka vyhledávání, může se objevit jako klauzule WHERE nebo klauzuli HAVING – můžete rozhodnout, která vytvořte podmínku.Následující příkaz například vytvoří průměrné ceny knih jednotlivých vydavatelů a pak zobrazí průměr pro vydavatele, ve kterých je průměrná cena vyšší než $10,00:
SELECT pub_id, AVG(price) FROM titles GROUP BY pub_id HAVING (AVG(price) > 10)
Používáte-li v podmínce vyhledávání agregační funkci, podmínky souhrnný a musí proto být součástí klauzule HAVING.