Práce se sloupci v agregačních dotazech (nástroje vizuální databáze)
platí pro:SQL Server
Při vytváření agregačních dotazů Návrhář dotazu a zobrazení dělá určité předpoklady, aby mohl vytvořit platný dotaz. Pokud například vytváříte agregační dotaz a označíte datový sloupec pro výstup, Návrhář dotazu a zobrazení automaticky vytvoří část sloupce klauzule GROUP BY, takže se nechtěně nepokoušíte zobrazit obsah jednotlivých řádků v souhrnu.
Použití funkce Seskupovat podle
Návrhář dotazů a zobrazení používá následující pokyny pro práci se sloupci:
Když zvolíte možnost Seskupit podle nebo do dotazu přidáte agregační funkci, všechny sloupce označené pro výstup nebo použité k řazení jsou automaticky přidány do klauzule GROUP BY. Sloupce nejsou automaticky přidány do klauzule GROUP BY, pokud jsou již součástí agregační funkce.
Pokud nechcete, aby byl konkrétní sloupec součástí klauzule GROUP BY, musíte ho ručně změnit výběrem jiné možnosti ve sloupci Seskupit podle v podokně Kritéria. Návrhář dotazů a zobrazení vám ale nebrání v výběru možnosti, která může vést k dotazu, který se nespustí.
Pokud ručně přidáte výstupní sloupec dotazu do agregační funkce v podokně Kritéria nebo SQL, nástroj Query and View Designer automaticky neodebere další výstupní sloupce z dotazu. Proto je nutné odebrat zbývající sloupce z výstupu dotazu nebo je provést jako součást klauzule GROUP BY nebo agregační funkce.
Když do sloupce Filtr v podokně Kritéria zadáte podmínku hledání, návrhář dotazu a zobrazení se řídí těmito pravidly:
Pokud se sloupec Group By mřížky nezobrazí (protože jste ještě nezadali agregační dotaz), je vyhledávací podmínka umístěna do klauzule WHERE.
Pokud jste již v agregačním dotazu a vybrali možnost Where ve sloupci Group By, je vyhledávací podmínka umístěna do klauzule WHERE.
Pokud sloupec Group By obsahuje jinou hodnotu než Where, je vyhledávací podmínka umístěna v klauzuli HAVING.
Použití klauzulí HAVING a WHERE
Následující principy popisují, jak můžete odkazovat na sloupce v agregačním dotazu v podmínkách hledání. Obecně můžete pomocí sloupce v podmínce hledání filtrovat řádky, které by se měly shrnout (klauzule WHERE), nebo určit, které seskupené výsledky se zobrazí v konečném výstupu (klauzule HAVING).
Jednotlivé datové sloupce se můžou zobrazovat v klauzuli WHERE nebo HAVING v závislosti na tom, jak se používají jinde v dotazu.
Klauzule WHERE slouží k výběru podmnožiny řádků pro sumarizaci a seskupování, a proto se použijí před provedením seskupení. Proto můžete datový sloupec použít v klauzuli WHERE, i když není součástí klauzule GROUP BY nebo obsažený v agregační funkci. Například následující příkaz vybere všechny tituly, které stojí více než 10,00 Usd, a zprůměruje cenu:
SELECT AVG(price) FROM titles WHERE price > 10
Pokud vytvoříte vyhledávací podmínku, která zahrnuje sloupec, který se používá také v klauzuli GROUP BY nebo agregační funkci, může se tato podmínka zobrazit jako klauzule WHERE nebo klauzule HAVING – můžete se rozhodnout, kterou podmínku vytvoříte. Například následující příkaz vytvoří průměrnou cenu pro názvy jednotlivých vydavatelů a pak zobrazí průměr pro vydavatele, ve kterém je průměrná cena větší než 10,00 Kč:
SELECT pub_id, AVG(price) FROM titles GROUP BY pub_id HAVING (AVG(price) > 10)
Pokud v podmínce hledání použijete agregační funkci, podmínka zahrnuje souhrn, a proto musí být součástí klauzule HAVING.
Viz také
Shrnout výstupy dotazu (Visual Database Tools)
Řazení a Seskupování Výsledků Dotazu (Visual Database Tools)