Búsquedas en tablas. SQL Estandar

A continuación, se muestran diferentes ejemplos de búsquedas sobre un conjunto de datos generado e insertado datos en post anteriores.

 

Obtener el código, nombre edad y ciudad de aquellos clientes mayores a 30 años pero que tengan una dirección registrada y ordenado descendentemente por código de cliente.

SELECT
   client_id, 
   age,
   client_name, 
   city 
   
FROM 
   ventas.tb_client
   
WHERE
   age > 30
 AND
   address IS NOT NULL  
   
ORDER BY 
   client_id DESC;


Obtener un listado con el código y nombre de las categorías que tengan más de 5 productos vinculados, ordenadas ascendentemente por nombre de categoría.

SELECT
   category_id,
   category_name

FROM
   ventas.tb_category

WHERE
   category_id IN (
   
      SELECT category_id
  
      FROM
        ventas.tb_product
   
      GROUP BY category_id
      HAVING   COUNT(category_id) > 5
   )
   
ORDER BY 
   category_name ASC; 

Obtener el nombre del producto, su precio y el nombre de la categoría de los productos que han sido adquiridos por clientes de Valladolid, ordenado descendentemente por precio.

SELECT 
   Pro.product_name,
   Pro.price,
   Cat.category_name

FROM
   ventas.tb_product Pro

INNER JOIN
   ventas.tb_order Orden
ON
   Orden.product_id = Pro.product_id

INNER JOIN
   ventas.tb_client Cli
ON
   Cli.client_id = Orden.client_id

INNER JOIN
   ventas.tb_category Cat
ON
   Pro.category_id = Cat.category_id
   
WHERE
   Cli.city = 'Valladolid'                                             
   
ORDER BY
  Pro.price DESC;

Calcular los costes totales de todas las compras de clientes de Valladolid.

SELECT 
   SUM(Pro.price * Orden.quantity)

FROM
   ventas.tb_product Pro

INNER JOIN
   ventas.tb_order Orden
ON
   Orden.product_id = Pro.product_id

INNER JOIN
   ventas.tb_client Cli
ON
   Cli.client_id = Orden.client_id

INNER JOIN
   ventas.tb_category Cat
ON
   Pro.category_id = Cat.category_id
   
WHERE
   Cli.city = 'Valladolid' 

Obtener para cada ciudad, el número total de clientes diferentes y el número total de pedidos, ordenados por número de clientes.

SELECT 
   Cli.city,
   COUNT(DISTINCT Cli.client_id) AS clientes_total,
   COUNT(Orden.order_id) AS pedidos_total

FROM
   ventas.tb_client     Cli,
   ventas.tb_order     Orden
   
WHERE
   Cli.client_id = Orden.client_id 

GROUP BY
   Cli.city

ORDER BY
   pedidos_total DESC,
   city ASC;

Otros artículos que pueden ser de interés:

Autor: Diego Calvo