sql >> Base de Datos >  >> RDS >> Database

Consulta SQL para comparar ventas de productos por mes

Muchas veces, deberá comparar las ventas de productos por mes, lado a lado, para determinar cómo les está yendo. Aquí hay una consulta SQL para comparar las ventas de productos por mes, si sus datos están almacenados en bases de datos MySQL/PostgreSQL/SQL Server.

Consulta SQL para comparar ventas de productos por mes

Supongamos que tiene una tabla sales(order_date, product, sale) que contiene las ventas diarias de todos tus productos.

mysql> create table sales(product varchar(255),order_date date,sale int);

mysql> insert into sales values('Pen','2020-01-01',20),('Paper','2020-01-02',25),
('Paper','2020-01-03',15),('Pen','2020-01-04',30),('Paper','2020-01-05',20)
...;

mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| Pen     | 2020-01-01 |   20 |
| Paper   | 2020-01-02 |   25 |
| Paper   | 2020-01-03 |   15 |
| Pen     | 2020-01-04 |   30 |
| Pen     | 2020-01-05 |   20 |
| ...     | ...        |   ...|
+---------+------------+------+

Consulta SQL para comparar ventas de productos por mes

En la mayoría de los casos, tendrá filas de ventas para todos sus productos, una debajo de la otra, en filas separadas, en lugar de columnas separadas. Si desea comparar las ventas de productos por mes, debe pivotar estos datos por producto columna.

Aquí está la consulta para pivotar su tabla de ventas por producto columna. Lo veremos en detalle

mysql> SELECT date_format(order_date,'%b-%y') as order_date,
       sum(IF(product='Pen', sale, NULL)) AS Pen,
       sum(IF(product='Paper', sale, NULL)) AS Paper
       FROM sales
       GROUP BY year(order_date),month(order_date),date_format(order_date,'%b-%y')
       ;
+------------+------+-------+
| order_date | Pen  | Paper |
+------------+------+-------+
| Jan-20     |  200 |   320 |
| Feb-20     |  250 |   220 |
| Mar-20     |  230 |   290 |
| Apr-20     |  190 |   210 |
| May-20     |  210 |   230 |
| Jun-20     |  320 |   120 |
| Jul-20     |  330 |   220 |
| Aug-20     |  210 |   260 |
| Sep-20     |  120 |   220 |
| Oct-20     |  280 |   120 |
| Nov-20     |  290 |   280 |
| Dec-20     |  200 |   320 |
+------------+------+-------+

En la consulta anterior, usamos la función DATE_FORMAT para obtener los nombres de los meses desde order_date columna. Además usamos declaración IF para crear una tabla dinámica por producto columna. En este caso, para cada fila, la declaración IF verificará el valor de la columna del producto y agregará el valor de venta a cualquiera de las columnas etiquetadas como "Bolígrafo" o "Papel", según el nombre del producto. También AGRUPAMOS POR nombre de mes, para obtener ventas mensuales de productos, a partir de pedidos diarios.

Después de calcular las ventas mensuales por producto, puede usar una herramienta de gráficos para trazarlas en un gráfico de líneas, como se muestra a continuación. Este es un ejemplo de un gráfico de líneas creado con Ubiq.

¿Sabías que puedes crear tablas dinámicas en Ubiq simplemente arrastrando y soltando?

Si desea crear gráficos, paneles e informes desde la base de datos MySQL/PostgreSQL/SQL Server, puede probar Ubiq. Ofrecemos una prueba gratuita de 14 días.