Guide for Cavallers i Dracs 4: Funcions d'agregació


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

Com abordar aquest problema

Es tracta de resumir una taula sencera amb les funcions d'agregat (COUNT, SUM, AVG, MIN, MAX). El resultat serà sempre una sola fila, amb tantes columnes com funcions posis. 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 FUNCIO1(columna), FUNCIO2(columna)
FROM taula
WHERE condició;   -- opcional
  • COUNT(*) compta files; COUNT(columna) compta els valors no NULL.
  • SUM(columna) i AVG(columna): suma i mitjana d'una columna numèrica.
  • MIN(columna) i MAX(columna): el valor més petit i el més gran. Amb dates en format AAAA-MM-DD, MIN és la més antiga i MAX la més recent.

Pregunta per pregunta

Pregunta 1. Comptar quantes files té una taula concreta, sense filtre.

Pregunta 2. Dues funcions sobre la mateixa columna numèrica (la de víctimes conegudes, mira-la a l'esquema), en l'ordre que diu l'enunciat: primer la suma i després la mitjana.

Pregunta 3. Dues funcions sobre dues columnes diferents de la taula de cavallers. Fixa't bé quina funció va amb quina columna i en quin ordre: la primera columna del resultat és sobre el naixement i la segona sobre la defunció.

Un exemple semblant

El màxim i el mínim de víctimes dels dracs vermells:

SELECT MAX(KnownVictims), MIN(KnownVictims)
FROM Dragons
WHERE Color = 'Red';

La data de defunció més antiga dels dracs i quants dracs tenen color informat:

SELECT MIN(DeathDate), COUNT(Color)
FROM Dragons;

Paranys habituals:

  • Quan una pregunta diu "en aquest ordre", és l'ordre de les columnes del SELECT: el jutge el comprova.
  • COUNT(*) i COUNT(columna) poden donar resultats diferents si hi ha NULL.
  • No afegeixis WHERE si la pregunta parla de "tots": canviaria el resultat.
  • AVG pot tenir decimals: no cal arrodonir, el jutge té tolerància.

Tornar al problema