Caso SQL con la cláusula Sum y Group By

Caso Sql Con La Clausula Sum Y Group By



En este tutorial, aprenderemos a usar la instrucción CASE con la función SUM y una cláusula GROUP BY.

Este tutorial no cubre los fundamentos del trabajo con la instrucción SQL Case, la función sum() o la cláusula GROUP BY. Si está buscando los conceptos básicos de estas características de SQL, consulte nuestros tutoriales sobre los temas para descubrir más.







Problema:

Digamos que tenemos una tabla llamada 'pedidos' y deseamos obtener las ventas totales de cada cliente agrupado por ID de cliente, pero también queremos calcular un descuento para los clientes que realizaron más de dos pedidos.



La tabla se muestra a continuación:



CREAR pedidos de TABLA (
order_id CLAVE PRIMARIA INT,
id_cliente INT,
producto_id INT,
order_date FECHA,
cantidad INT,
precio DECIMAL ( 10 , 2 )
) ;

 
Inserte una muestra de datos en la tabla como se muestra a continuación:





INSERTAR EN pedidos ( order_id, customer_id, product_id, order_date, cantidad, precio )
VALORES
  ( 1 , 101 , 1 , '2022-04-01' , 2 , 10.99 ) ,
  ( 2 , 102 , 2 , '2022-04-01' , 1 , 19.99 ) ,
  ( 3 , 103 , 1 , '2022-04-02' , 3 , 8.99 ) ,
  ( 4 , 101 , 3 , '2022-04-03' , 2 , 15.99 ) ,
  ( 5 , 102 , 1 , '2022-04-03' , 1 , 12.99 ) ,
  ( 6 , 104 , 2 , '2022-04-04' , 4 , 7.99 ) ,
  ( 7 , 103 , 3 , '2022-04-05' , 2 , 21.99 ) ,
  ( 8 , 101 , 2 , '2022-04-06' , 1 , 18.99 ) ,
  ( 9 , 104 , 1 , '2022-04-07' , 2 , 9.99 ) ,
  ( 10 , 102 , 3 , '2022-04-07' , 3 , 14.99 ) ;

 
Esto debería crear una tabla de la siguiente manera:



Caso SQL con la cláusula Sum y Group By

Para obtener las ventas totales de cada cliente agrupado por ID y calcular el descuento para los clientes que realizaron más de dos pedidos, podemos usar la instrucción CASE junto con la cláusula SUM y GROUP BY, como se muestra a continuación:

seleccionar pedidos.customer_id, suma ( pedidos.cantidad * pedidos.precio * ( caso cuando cuente ( * ) > 2 entonces 0.9 demás 1 fin ) ) como ventas_totales de pedidos;

 
En el ejemplo dado, usamos la declaración SQL CASE para verificar si el cliente ha realizado más de dos pedidos.

Si un cliente ha realizado más de dos pedidos, multiplicamos el total_sales por 0,9, lo que aplica un 10% de descuento.

Conclusión

Discutimos cómo podemos usar la instrucción SQL CASE con la cláusula SUM() y GROUP BY.