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(), i MAX() 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:

SELECT columna1, funció_agregació(columna2)
FROM taula
GROUP BY columna1;

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().

SELECT producte, SUM(quantitat) AS quantitat_total
FROM vendes
GROUP BY producte;

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.

SELECT producte, AVG(preu) AS preu_mitja
FROM vendes
GROUP BY 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:

SELECT producte, COUNT(id_venda) AS nombre_vendes
FROM vendes
GROUP BY producte;

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 llista SELECT però no en la clàusula GROUP 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

Mòdul 5: Manipulació de dades

Mòdul 6: Funcions avançades de SQL

Mòdul 7: Subconsultes i consultes niades

Mòdul 8: Índexs i optimització del rendiment

Mòdul 9: Transaccions i concurrència

Mòdul 10: Temes avançats

Mòdul 11: SQL en la pràctica

Mòdul 12: Projecte final

© Copyright 2024. Tots els drets reservats