Guide for Empleats 4: Funcions d'agregat
Com abordar aquest problema
Ara no vols veure files una a una, sinó resumir tota la taula en un sol valor (o uns quants valors en una sola fila) amb les funcions d'agregat. 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 FUNCIO(columna), FUNCIO(columna), ...
FROM taula
WHERE condició; -- opcional: resumeix només les files filtrades
COUNT(*): quantes files hi ha.COUNT(columna): quantes files tenen aquella columna no NULL.COUNT(DISTINCT columna): quants valors diferents (no NULL) hi ha.SUM,AVG: suma i mitjana d'una columna numèrica.MIN,MAX: el valor més petit i el més gran (funciona amb números, textos i dates).
Si poses diverses funcions al SELECT, surten com a columnes d'una mateixa fila, en l'ordre en què les escrius.
Pregunta per pregunta
Pregunta 1. Comptar files de la taula, sense cap condició.
Pregunta 2. Tres agregats sobre la mateixa columna, a la mateixa fila. L'ordre de les columnes és el que diu l'enunciat (mínim, màxim, mitjana): si els canvies d'ordre, no coincidirà.
Pregunta 3. Dos comptatges diferents en una fila. El primer no vol saber quants empleats hi ha, sinó quants valors diferents té una columna. El segon vol comptar només les files on una columna té valor: recorda la diferència entre COUNT(*) i COUNT(columna).
Un exemple semblant
Quants empleats tenen correu i quant sumen els seus salaris, només per als que cobren més de 1500:
SELECT COUNT(EMail), SUM(Salary)
FROM Employees
WHERE Salary > 1500;
La data de naixement més recent (l'empleat més jove):
SELECT MAX(BirthDate)
FROM Employees;
Paranys habituals:
COUNT(*)compta totes les files;COUNT(columna)se salta elsNULL. Tria segons el que et demanin.DISTINCTva dins del parèntesi:COUNT(DISTINCT columna).- No barregis una columna normal amb funcions d'agregat sense
GROUP BY(això ho veuràs al problema següent): aquí només calen funcions. AVGpot donar decimals; el jutge els compara amb tolerància, així que no cal arrodonir.