Guide for GroupBy 5: Agrupant dades


Això és una guia per ajudar-te a començar amb aquest problema — no és la solució.

Com abordar aquest problema

Practiques GROUP BY: dividir una taula en grups segons el valor d'una columna i obtenir una fila de resultat per grup, amb un comptatge o una mitjana. La BD té tres taules d'empleats molt semblants (Employees, Employees2, Employees3): cada pregunta et diu quina has de fer servir. Cada pregunta té el seu propi quadre de text: escriu-hi una sola consulta SELECT (sense res més) per a cada pregunta.

La sintaxi que necessites

SELECT columna_de_grup, FUNCIO(columna)
FROM taula
GROUP BY columna_de_grup;
  • GROUP BY ajunta les files que tenen el mateix valor a columna_de_grup.
  • COUNT(*) compta les files de cada grup.
  • AVG(columna), SUM, MIN, MAX resumeixen una columna dins de cada grup. Totes elles ignoren els valors NULL.
  • Es pot agrupar per qualsevol columna, també per una de numèrica.

Pregunta per pregunta

Pregunta 1. La columna de grup és la del nom de pila, i el resum és un comptatge. Fixa't en la taula que et demanen (no és la primera).

Pregunta 2. El mateix patró, però ara la columna de grup és numèrica: cada sou diferent és un grup.

Pregunta 3. Ara canvia la taula i el resum és una mitjana. En aquesta taula alguns sous són NULL: no cal fer res especial, perquè la funció de mitjana ja els ignora: la mitjana d'un grup es calcula només amb els sous que hi ha.

Un exemple semblant

Per a cada cognom de la taula Employees, quants empleats el tenen:

SELECT LastName, COUNT(*)
FROM Employees
GROUP BY LastName;

Per a cada nom de Employees3, quantes files té el grup i quantes tenen el sou informat:

SELECT FirstName, COUNT(*), COUNT(Salary)
FROM Employees3
GROUP BY FirstName;

Paranys habituals:

  • Les tres taules tenen les mateixes columnes: és molt fàcil consultar la taula equivocada.
  • COUNT(*) compta totes les files; COUNT(columna) i AVG(columna) se salten els NULL.
  • No afegeixis un WHERE ... IS NOT NULL si no cal: podria fer desaparèixer grups sencers que el resultat sí que espera.
  • L'ordre de les columnes importa (primer la de grup, després el resum); l'ordre de les files no.

Tornar al problema