Jak używać T-SQL Grupuj według

głosy
28

Wiem, że muszę mieć (choć nie wiem dlaczego) do GROUP BYklauzuli na końcu zapytania SQL, który wykorzystuje wszystkie funkcje agregujące jak count, sum, avgitp:

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

Kiedy indziej GROUP BYbyć przydatne, i jakie są konsekwencje wydajność?

Utwórz 05/08/2008 o 19:55
źródło użytkownik
W innych językach...                            


5 odpowiedzi

głosy
2

Licząc liczbę razy tagi są używane może być przykładem google:

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

Jeśli chcesz po prostu odrębną wartość tagów, wolałbym użyć DISTINCToświadczenie.

SELECT DISTINCT TagName
FROM Tags
ORDER BY TagName ASC
Odpowiedział 05/08/2008 o 19:58
źródło użytkownik

głosy
0

GROUP BY pomaga także gdy chcesz wygenerować raport, który będzie średnia lub suma pęczek danych. Można grupować przez Departament ID i suma wszystkich przychodów ze sprzedaży lub AVG Ilość sprzedaży dla każdego miesiąca.

Odpowiedział 05/08/2008 o 20:00
źródło użytkownik

głosy
3

Grupa siłami całego zestawu mają być wypełniane przed zwracane są rekordy (ponieważ jest niejawna sort).

Z tego powodu (i wielu innych), nigdy nie używać GROUP BY w podkwerendzie.

Odpowiedział 05/08/2008 o 20:01
źródło użytkownik

głosy
30

Aby pobrać liczbę widżety z każdej kategorii widżet, który ma więcej niż 5 widżety, można to zrobić:

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

Z „konieczności” klauzula jest coś ludzie często zapominają o zamiast decydując aby pobrać wszystkie swoje dane do klienta i iteracja go tam.

Odpowiedział 05/08/2008 o 20:32
źródło użytkownik

głosy
13

GROUP BY jest podobna do różniący się, że grupy IT wielu rekordów w jednym.

Ten przykład, zapożyczony z http://www.devguru.com/technologies/t-sql/7080.asp , wymienia różne produkty w tabeli Produkty.

SELECT Product FROM Products GROUP BY Product

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

Zaletą GROUP ponad odrębna, jest to, że daje precyzyjną kontrolę w przypadku korzystania z klauzuli 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
Odpowiedział 19/08/2008 o 15:02
źródło użytkownik

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