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

SQL-Abfrage zum Vergleich der Produktverkäufe nach Monat

Oft müssen Sie die Produktverkäufe nach Monat nebeneinander vergleichen, um festzustellen, wie sie abschneiden. Hier ist eine SQL-Abfrage, um Produktverkäufe nach Monat zu vergleichen, wenn Ihre Daten in MySQL/PostgreSQL/SQL Server-Datenbanken gespeichert sind.

SQL-Abfrage zum Vergleich der Produktverkäufe nach Monat

Nehmen wir an, Sie haben eine Tabelle sales(order_date, product, sale) das die täglichen Verkäufe aller Ihrer Produkte enthält.

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

SQL-Abfrage zum Vergleich der Produktverkäufe nach Monat

In den meisten Fällen haben Sie Verkaufszeilen für alle Ihre Produkte untereinander in separaten Zeilen statt in separaten Spalten. Wenn Sie Produktverkäufe nach Monat vergleichen möchten, müssen Sie diese Daten nach Produkt ausrichten Spalte.

Hier ist die Abfrage, um Ihre Verkaufstabelle nach Produkt zu drehen Säule. Wir werden uns das im Detail ansehen

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

In der obigen Abfrage verwenden wir die DATE_FORMAT-Funktion, um Monatsnamen aus order_date abzurufen Säule. Weiterhin verwenden wir IF-Anweisung um eine Pivot-Tabelle nach Produkt zu erstellen Säule. In diesem Fall prüft die IF-Anweisung für jede Zeile den Wert der Produktspalte und fügt den Verkaufswert je nach Produktname zu einer Spalte mit der Bezeichnung „Stift“ oder „Papier“ hinzu. Wir GRUPPIEREN NACH Monatsnamen, um monatliche Produktverkäufe aus täglichen Bestellungen zu erhalten.

Nachdem Sie die monatlichen Verkäufe pro Produkt berechnet haben, können Sie sie mit einem Diagrammtool in einem Liniendiagramm darstellen, wie unten gezeigt. Hier ist ein Beispiel für ein Liniendiagramm, das mit Ubiq erstellt wurde.

Wussten Sie, dass Sie Pivot-Tabellen in Ubiq einfach per Drag &Drop erstellen können?

Wenn Sie Diagramme, Dashboards und Berichte aus einer MySQL/PostgreSQL/SQL Server-Datenbank erstellen möchten, können Sie Ubiq ausprobieren. Wir bieten eine 14-tägige kostenlose Testversion an.