Jak mohu použít T-SQL seskupit

hlasů
28

Vím, že je potřeba mít (i když nevím proč) se GROUP BYustanovení o konci SQL dotazu, který používá žádné agregační funkce, jako count, sum, avgatd:

SELECT count(userID), userName
FROM users
GROUP BY userName

Kdy jindy by GROUP BYbylo užitečné, a jaké jsou důsledky výkonu?

Položena 05/08/2008 v 19:55
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
30

Chcete-li načíst počet widgetů z každé kategorie widgetů, který má více než 5 widgetů, můžete to udělat:

SELECT WidgetCategory, count(*)
FROM Widgets
GROUP BY WidgetCategory
HAVING count(*) > 5

Dále jen „s“ klauzule je něco, co lidé často zapomínají, místo toho zvolit načíst všechna data na klienta a iterace to tam.

Odpovězeno 05/08/2008 v 20:32
zdroj uživatelem

hlasů
13

GROUP BY je podobný DISTINCT v tom, že skupiny více záznamů do jednoho.

Tento příklad, půjčil si od http://www.devguru.com/technologies/t-sql/7080.asp vyjmenovává různé produkty v tabulce Products.

SELECT Product FROM Products GROUP BY Product

Product
-------------
Desktop
Laptop
Mouse
Network Card
Hard Drive
Software
Book
Accessory

Výhodou GROUP BY nad DISTINCT, je to, že vám může dát podrobnější kontrolu při použití klauzule HAVING.

SELECT Product, count(Product) as ProdCnt
FROM Products
GROUP BY Product
HAVING count(Product) > 2

Product      ProdCnt
--------------------
Desktop          10
Laptop            5
Mouse             3
Network Card      9
Software          6
Odpovězeno 19/08/2008 v 15:02
zdroj uživatelem

hlasů
3

Skupina By sil celé sady musí být naplněn před jsou vráceny záznamy (protože se jedná o implicitní třídění).

Z tohoto důvodu (a mnoho dalších), nikdy nepoužívejte skupinu podle poddotaz.

Odpovězeno 05/08/2008 v 20:01
zdroj uživatelem

hlasů
2

Počítání, kolikrát jsou použity tagy může být Google příklad:

SELECT TagName, Count(*)
AS TimesUsed
FROM Tags
GROUP BY TagName ORDER TimesUsed

Chcete-li pouze výraznou hodnotu značek, tak bych raději používat DISTINCTprohlášení.

SELECT DISTINCT TagName
FROM Tags
ORDER BY TagName ASC
Odpovězeno 05/08/2008 v 19:58
zdroj uživatelem

hlasů
0

GROUP BY také pomáhá, když chcete vytvořit sestavu, která bude průměrný nebo sečíst spoustu dat. Můžete GROUP BY ID oddělení a součet všech příjmů prodeje nebo AVG počet prodejů za každý měsíc.

Odpovězeno 05/08/2008 v 20:00
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more