Database
 sql >> Database >  >> RDS >> Database

Query SQL per confrontare le vendite di prodotti per mese

Molte volte, dovrai confrontare le vendite di prodotti per mese, fianco a fianco, per determinare come stanno andando. Ecco una query SQL per confrontare le vendite di prodotti per mese, se i tuoi dati sono archiviati in database MySQL/PostgreSQL/SQL Server.

Query SQL per confrontare le vendite di prodotti per mese

Supponiamo che tu abbia una tabella vendite(data_ordine, prodotto, vendita) che contiene le vendite giornaliere di tutti i tuoi prodotti.

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 |
| ...     | ...        |   ...|
+---------+------------+------+

Query SQL per confrontare le vendite di prodotti per mese

Nella maggior parte dei casi, avrai righe di vendita per tutti i tuoi prodotti una sotto l'altra, in righe separate, anziché colonne separate. Se desideri confrontare le vendite di prodotti per mese, devi convertire questi dati in base al prodotto colonna.

Ecco la query per trasformare la tabella delle vendite in base a prodotto colonna. Lo esamineremo in dettaglio

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 |
+------------+------+-------+

Nella query precedente, utilizziamo la funzione DATE_FORMAT per ottenere i nomi dei mesi da data_ordine colonna. Inoltre utilizziamo istruzione IF per creare una tabella pivot per prodotto colonna. In questo caso, per ogni riga, l'istruzione IF verificherà il valore della colonna del prodotto e aggiungerà il valore di vendita a una delle colonne etichettate "Penna" o "Carta" a seconda del nome del prodotto. GRUPPIamo anche per nome del mese, per ottenere vendite mensili di prodotti, da ordini giornalieri.

Dopo aver calcolato le vendite mensili per prodotto, puoi utilizzare uno strumento di creazione di grafici per tracciarlo su un grafico a linee, come mostrato di seguito. Ecco un esempio di un grafico a linee creato utilizzando Ubiq.

Sapevi che puoi creare tabelle pivot in Ubiq semplicemente trascinando e rilasciando?

Se desideri creare grafici, dashboard e report dal database MySQL/PostgreSQL/SQL Server, puoi provare Ubiq. Offriamo una prova gratuita di 14 giorni.