Vra

Ek weet wat ek nodig het om te hê (alhoewel ek weet nie hoekom) 'n GROUP BY klousule op die einde van 'n SQL navraag dat enige totaal funksies gebruik soos count, sum, avg, ens:

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

Wanneer anders sou GROUP BY wees bruikbare, en wat is die prestasie gevolge?

Was dit nuttig?

Oplossing

Om die aantal widgets uit elke kategorie widget wat meer as 5 widgets het haal, kan jy dit doen:

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

Die "met" klousule is iets wat mense dikwels vergeet, in plaas kies om al hul data aan die kliënt te haal en iterating deur dit daar.

Ander wenke

GROUP BY is soortgelyk aan DISTINCT in dat dit groepe verskeie rekords in een.

Hierdie voorbeeld, geleen van http://www.devguru.com/technologies /t-sql/7080.asp , lys duidelike produkte in die produkte tafel.

SELECT Product FROM Products GROUP BY Product

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

Die voordeel van GROEP met meer as afsonderlike, is dat dit jou korrel beheer kan gee wanneer dit gebruik word met 'n WAT klousule.

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

Groep Deur magte die hele stel om bevolk voor rekords teruggekeer (want dit is 'n implisiete soort).

Om dié rede (en baie ander), nooit gebruik 'n groep in 'n subquery.

Tel die aantal kere tags gebruik kan 'n Google voorbeeld wees:

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

As jy wil net 'n duidelike waarde van etikette, sou ek verkies om die DISTINCT verklaring gebruik.

SELECT DISTINCT TagName
FROM Tags
ORDER BY TagName ASC

GROUP BY help ook as jy wil 'n verslag wat sal gemiddeld of som 'n klomp van die data te genereer. Jy kan GROEP deur die Departement ID en die som al die omset of AVG die telling van verkope vir elke maand.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top