En aquest tema, explorarem com utilitzar SQL per a l'anàlisi de dades. Aprendrem a extreure informació valuosa de les bases de dades, utilitzant diverses tècniques i funcions avançades. Aquestes habilitats són essencials per a analistes de dades, científics de dades i qualsevol persona que necessiti treballar amb grans volums de dades.

Objectius del tema

  • Comprendre com utilitzar SQL per a l'anàlisi de dades.
  • Aprendre a utilitzar funcions agregades i de finestra.
  • Realitzar anàlisis de dades complexes amb subconsultes i CTEs.
  • Aplicar tècniques d'optimització per millorar el rendiment de les consultes.

Contingut

  1. Funcions agregades

Les funcions agregades són essencials per resumir i agrupar dades. Les funcions més comunes són SUM, AVG, COUNT, MIN i MAX.

Exemple:

SELECT department, COUNT(*) AS num_employees, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;

Explicació:

  • COUNT(*) compta el nombre d'empleats per departament.
  • AVG(salary) calcula el salari mitjà per departament.
  • GROUP BY department agrupa els resultats per departament.

  1. Funcions de finestra

Les funcions de finestra permeten realitzar càlculs sobre un conjunt de files relacionades amb la fila actual.

Exemple:

SELECT employee_id, department, salary,
       RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS rank
FROM employees;

Explicació:

  • RANK() assigna un rang a cada empleat dins del seu departament basat en el salari.
  • PARTITION BY department divideix les dades per departament.
  • ORDER BY salary DESC ordena els salaris de major a menor dins de cada departament.

  1. Subconsultes

Les subconsultes són consultes dins d'altres consultes. Són útils per a realitzar anàlisis més complexes.

Exemple:

SELECT employee_id, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

Explicació:

  • La subconsulta (SELECT AVG(salary) FROM employees) calcula el salari mitjà de tots els empleats.
  • La consulta principal selecciona els empleats amb un salari superior a la mitjana.

  1. Expressions de taula comunes (CTEs)

Les CTEs són una manera de definir subconsultes temporals que poden ser referenciades dins de la consulta principal.

Exemple:

WITH AvgSalaries AS (
    SELECT department, AVG(salary) AS avg_salary
    FROM employees
    GROUP BY department
)
SELECT e.employee_id, e.department, e.salary, a.avg_salary
FROM employees e
JOIN AvgSalaries a ON e.department = a.department
WHERE e.salary > a.avg_salary;

Explicació:

  • La CTE AvgSalaries calcula el salari mitjà per departament.
  • La consulta principal selecciona els empleats amb un salari superior a la mitjana del seu departament.

  1. Optimització de consultes

Per a l'anàlisi de dades, és crucial que les consultes siguin eficients. Aquí tens alguns consells per optimitzar les teves consultes:

  • Utilitza índexs: Els índexs poden millorar significativament el rendiment de les consultes.
  • Evita subconsultes innecessàries: Utilitza JOINs en lloc de subconsultes quan sigui possible.
  • Filtra les dades primer: Aplica les condicions de filtratge abans d'agrupar o ordenar les dades.
  • Utilitza CTEs amb moderació: Les CTEs poden ser útils, però també poden afectar el rendiment si no s'utilitzen correctament.

Exercici pràctic

Enunciat:

Tens una taula sales amb les següents columnes: sale_id, product_id, quantity, price, sale_date. Realitza una consulta que mostri el total de vendes (quantitat * preu) per cada producte, només per a les vendes realitzades en l'últim any.

Solució:

WITH RecentSales AS (
    SELECT product_id, quantity, price
    FROM sales
    WHERE sale_date >= DATEADD(year, -1, GETDATE())
)
SELECT product_id, SUM(quantity * price) AS total_sales
FROM RecentSales
GROUP BY product_id;

Explicació:

  • La CTE RecentSales selecciona les vendes realitzades en l'últim any.
  • La consulta principal calcula el total de vendes per producte.

Errors comuns i consells

  • No utilitzar índexs: Assegura't que les columnes utilitzades en les condicions de filtratge i les JOINs tinguin índexs adequats.
  • Subconsultes lentes: Si una subconsulta és lenta, considera reescriure-la com una JOIN o una CTE.
  • Agrupacions incorrectes: Quan utilitzis GROUP BY, assegura't que totes les columnes no agregades estiguin incloses en la clàusula GROUP BY.

Conclusió

En aquest tema, hem après com utilitzar SQL per a l'anàlisi de dades, incloent funcions agregades, funcions de finestra, subconsultes i CTEs. També hem vist com optimitzar les consultes per millorar el rendiment. Aquestes habilitats són essencials per a qualsevol persona que treballi amb dades i necessiti extreure informació valuosa de les bases de dades.

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