Group by
La clàusula `group by` parteix la taula en grups i et calcula un valor per a cada grup.
Introducció
Ja saps calcular un número que resumeix tota una taula.
count(*) et diu quantes files hi ha, i avg(score) et dóna la mitjana de tota la columna.
Però gairebé mai en vols un de sol: vols quantes pel·lícules hi ha de cada classificació, quant s’ha gastat cada client, quina població té cada continent.
La clàusula group by parteix la taula en grups perquè puguis calcular aquests números per a cadascun.
Entorn de treball
Continues amb les dues bases de dades de les pàgines anteriors:
També hi tornarà a sortir la taula employees de Where.
Si has perdut cap dels tres, els tens tots al projecte d’aquesta pàgina.
group by
Posa la clàusula després del from i, si n’hi ha, del where:
select <columnes>
from <taula>
group by <columnes>;SQLite avalua el group by després del where i abans del select:
Comença per la taula film, amb les mil pel·lícules del catàleg.
Cada pel·lícula porta una classificació per edats a la columna rating:
select rating, count(*) as pellicules
from film
group by rating;| rating | pellicules |
|---|---|
| G | 178 |
| NC-17 | 210 |
| PG | 194 |
| PG-13 | 223 |
| R | 195 |
Cinc files.
group by rating ha repartit les mil pel·lícules en cinc piles, una per classificació, i count(*) n’ha comptat les de cada pila.
178 + 210 + 194 + 223 + 195 són les mil de sempre: cap fila s’ha perdut i cap no s’ha comptat dues vegades.
Amb sis pel·lícules en comptes de mil ho veus tot d’un cop:
Les tres pel·lícules classificades G van a parar al mateix grup, i el grup acaba sent una sola fila del resultat.
Una fila per grup
La taula que et retorna una consulta amb group by ja no té una fila per pel·lícula: en té una per grup.
Aquest és tot el canvi, i és el que explica la resta de la pàgina.
Per això select * deixa de tenir sentit: la fila del resultat no és cap fila de film, i les mil film_id no caben en cinc files.
Sense cap funció d’agregació, group by només et diu quins grups hi ha:
select rating
from film
group by rating;Estàs llegint una vista prèvia.
Inicia sessió amb Google per llegir la pàgina completa.
Inicia sessió amb GoogleAmb qualsevol compte de Google. Només et demanarem que acceptis les condicions del servei.