En aquest tema, aprendrem a utilitzar la clàusula GROUP BY
per agrupar dades en les nostres consultes SQL. Aquesta clàusula és especialment útil quan volem calcular valors agregats com sumes, mitjanes, comptes, etc., per a grups de files que comparteixen un valor comú.
Conceptes Clau
- Clàusula
GROUP BY
: Agrupa files que tenen valors comuns en columnes específiques. - Funcions d'agregació: Funcions com
SUM()
,AVG()
,COUNT()
,MIN()
, iMAX()
que s'utilitzen per calcular valors sobre grups de dades.
Sintaxi Bàsica
La sintaxi bàsica de la clàusula GROUP BY
és la següent:
Exemple Pràctic
Suposem que tenim una taula vendes
amb les següents columnes: id_venda
, producte
, quantitat
, i preu
.
CREATE TABLE vendes ( id_venda INT, producte VARCHAR(50), quantitat INT, preu DECIMAL(10, 2) ); INSERT INTO vendes (id_venda, producte, quantitat, preu) VALUES (1, 'Producte A', 10, 9.99), (2, 'Producte B', 5, 19.99), (3, 'Producte A', 7, 9.99), (4, 'Producte C', 3, 29.99), (5, 'Producte B', 2, 19.99);
Agrupar per Producte
Volem saber la quantitat total venuda per a cada producte. Utilitzarem la clàusula GROUP BY
juntament amb la funció d'agregació SUM()
.
Resultat:
producte | quantitat_total |
---|---|
Producte A | 17 |
Producte B | 7 |
Producte C | 3 |
Agrupar per Producte i Calcular la Mitjana de Preu
També podem agrupar per producte i calcular la mitjana de preu per a cada producte.
Resultat:
producte | preu_mitja |
---|---|
Producte A | 9.99 |
Producte B | 19.99 |
Producte C | 29.99 |
Exercicis Pràctics
Exercici 1
Descripció: Troba el nombre total de vendes per a cada producte.
Consulta:
Solució Esperada:
producte | nombre_vendes |
---|---|
Producte A | 2 |
Producte B | 2 |
Producte C | 1 |
Exercici 2
Descripció: Calcula la quantitat total i el preu total per a cada producte.
Consulta:
SELECT producte, SUM(quantitat) AS quantitat_total, SUM(preu * quantitat) AS preu_total FROM vendes GROUP BY producte;
Solució Esperada:
producte | quantitat_total | preu_total |
---|---|---|
Producte A | 17 | 169.83 |
Producte B | 7 | 139.93 |
Producte C | 3 | 89.97 |
Errors Comuns
- No incloure totes les columnes no agregades en la clàusula
GROUP BY
: Si una columna apareix en la llistaSELECT
però no en la clàusulaGROUP BY
ni en una funció d'agregació, es produirà un error. - Utilitzar funcions d'agregació incorrectament: Assegura't d'utilitzar les funcions d'agregació correctes per al tipus de càlcul que necessites.
Resum
En aquest tema, hem après a utilitzar la clàusula GROUP BY
per agrupar dades i calcular valors agregats. Hem vist exemples pràctics i hem realitzat exercicis per reforçar els conceptes apresos. La clàusula GROUP BY
és una eina poderosa per analitzar dades i obtenir informació valuosa a partir de grans conjunts de dades.
En el següent tema, explorarem la clàusula HAVING
, que ens permetrà filtrar grups de dades després d'haver aplicat la clàusula GROUP BY
.
Curs de SQL
Mòdul 1: Introducció a SQL
Mòdul 2: Consultes bàsiques de SQL
Mòdul 3: Treballar amb múltiples taules
Mòdul 4: Filtratge avançat de dades
- Utilitzar LIKE per a coincidències de patrons
- Operadors IN i BETWEEN
- Valors NULL i IS NULL
- Agrupar dades amb GROUP BY
- Clàusula HAVING
Mòdul 5: Manipulació de dades
Mòdul 6: Funcions avançades de SQL
Mòdul 7: Subconsultes i consultes niades
- Introducció a les subconsultes
- Subconsultes correlacionades
- EXISTS i NOT EXISTS
- Utilitzar subconsultes en les clàusules SELECT, FROM i WHERE
Mòdul 8: Índexs i optimització del rendiment
- Comprendre els índexs
- Crear i gestionar índexs
- Tècniques d'optimització de consultes
- Analitzar el rendiment de les consultes
Mòdul 9: Transaccions i concurrència
- Introducció a les transaccions
- Propietats ACID
- Instruccions de control de transaccions
- Gestionar la concurrència
Mòdul 10: Temes avançats
Mòdul 11: SQL en la pràctica
- Casos d'ús del món real
- Millors pràctiques
- SQL per a l'anàlisi de dades
- SQL en el desenvolupament web