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 llistaSELECTperò no en la clàusulaGROUP BYni 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
