Les subconsultes són una eina poderosa en SQL que permeten realitzar consultes dins d'altres consultes. Aquestes poden ser utilitzades en diverses parts d'una instrucció SQL, com en les claus SELECT, FROM, WHERE, i altres. En aquest tema, explorarem què són les subconsultes, com utilitzar-les i veurem exemples pràctics per entendre millor el seu funcionament.

Què és una Subconsulta?

Una subconsulta és una consulta SQL que es troba dins d'una altra consulta SQL. La subconsulta es pot utilitzar per retornar dades que seran utilitzades per la consulta principal. Les subconsultes poden ser utilitzades en diverses parts d'una instrucció SQL, com ara:

  • En la clàusula SELECT per retornar valors calculats.
  • En la clàusula FROM per crear una taula temporal.
  • En la clàusula WHERE per filtrar resultats basats en una condició.

Tipus de Subconsultes

Hi ha dos tipus principals de subconsultes:

  1. Subconsultes Escalares: Retornen un sol valor.
  2. Subconsultes de Taula: Retornen un conjunt de files.

Exemples de Subconsultes

Subconsulta en la Clàusula SELECT

SELECT 
    product_id, 
    product_name, 
    (SELECT AVG(price) FROM products) AS average_price
FROM 
    products;

En aquest exemple, la subconsulta (SELECT AVG(price) FROM products) calcula el preu mitjà de tots els productes i el retorna com a average_price per a cada fila de la consulta principal.

Subconsulta en la Clàusula FROM

SELECT 
    sub.product_id, 
    sub.total_sales
FROM 
    (SELECT 
        product_id, 
        SUM(quantity) AS total_sales 
     FROM 
        sales 
     GROUP BY 
        product_id) AS sub;

En aquest exemple, la subconsulta dins de la clàusula FROM crea una taula temporal sub que conté el total de vendes per a cada producte. La consulta principal després selecciona dades d'aquesta taula temporal.

Subconsulta en la Clàusula WHERE

SELECT 
    product_id, 
    product_name
FROM 
    products
WHERE 
    price > (SELECT AVG(price) FROM products);

En aquest exemple, la subconsulta (SELECT AVG(price) FROM products) calcula el preu mitjà de tots els productes. La consulta principal després selecciona tots els productes que tenen un preu superior al preu mitjà.

Exercicis Pràctics

Exercici 1: Subconsulta en la Clàusula SELECT

Enunciat: Escriu una consulta que mostri el product_id, product_name i el preu mitjà de tots els productes com a average_price.

Solució:

SELECT 
    product_id, 
    product_name, 
    (SELECT AVG(price) FROM products) AS average_price
FROM 
    products;

Exercici 2: Subconsulta en la Clàusula FROM

Enunciat: Escriu una consulta que mostri el product_id i el total de vendes (total_sales) per a cada producte.

Solució:

SELECT 
    sub.product_id, 
    sub.total_sales
FROM 
    (SELECT 
        product_id, 
        SUM(quantity) AS total_sales 
     FROM 
        sales 
     GROUP BY 
        product_id) AS sub;

Exercici 3: Subconsulta en la Clàusula WHERE

Enunciat: Escriu una consulta que mostri el product_id i product_name de tots els productes que tenen un preu superior al preu mitjà de tots els productes.

Solució:

SELECT 
    product_id, 
    product_name
FROM 
    products
WHERE 
    price > (SELECT AVG(price) FROM products);

Errors Comuns i Consells

  • Error Comú: Utilitzar una subconsulta que retorna múltiples files en una clàusula que espera un sol valor.

    • Solució: Assegura't que la subconsulta retorni un sol valor quan s'utilitza en contextos escalares.
  • Error Comú: No aliasar la subconsulta en la clàusula FROM.

    • Solució: Sempre proporciona un àlies a la subconsulta per poder referenciar-la correctament en la consulta principal.

Conclusió

Les subconsultes són una eina essencial en SQL que permeten realitzar consultes complexes de manera eficient. Hem vist com utilitzar subconsultes en diverses parts d'una instrucció SQL i hem practicat amb exemples concrets. Amb aquesta base, estàs preparat per aplicar subconsultes en les teves pròpies consultes SQL i resoldre problemes més avançats.

Curs de PostgreSQL

Mòdul 1: Introducció a PostgreSQL

Mòdul 2: Operacions bàsiques de SQL

Mòdul 3: Consultes SQL avançades

Mòdul 4: Disseny de bases de dades i normalització

Mòdul 5: Funcionalitats avançades de PostgreSQL

Mòdul 6: Optimització i millora del rendiment

Mòdul 7: Seguretat i gestió d'usuaris

Mòdul 8: Treballant amb JSON i funcionalitats NoSQL

Mòdul 9: Extensions i eines avançades

Mòdul 10: Estudis de cas i aplicacions del món real

© Copyright 2024. Tots els drets reservats