sql >> Database >  >> RDS >> Database

SQL-query om productverkopen per maand te vergelijken

Vaak moet u productverkopen per maand naast elkaar vergelijken om te bepalen hoe ze het doen. Hier is een SQL-query om productverkopen per maand te vergelijken, als uw gegevens zijn opgeslagen in MySQL/PostgreSQL/SQL Server-databases.

SQL-query om productverkopen per maand te vergelijken

Stel dat u een tabel heeft sales(order_date, product, sale) die de dagelijkse verkoop van al uw producten bevat.

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-query om productverkopen per maand te vergelijken

In de meeste gevallen heeft u verkooprijen voor al uw producten onder elkaar, in aparte rijen in plaats van aparte kolommen. Als u de productverkoop per maand wilt vergelijken, moet u deze gegevens op product afstemmen kolom.

Dit is de vraag om uw verkooptabel te draaien op product kolom. We zullen het in detail bekijken

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 de bovenstaande zoekopdracht gebruiken we de functie DATE_FORMAT om maandnamen op te halen vanaf order_date kolom. Verder gebruiken we IF statement om draaitabel te maken op product kolom. In dit geval controleert de IF-verklaring voor elke rij de waarde van de productkolom en voegt de verkoopwaarde toe aan een van de kolommen met het label 'Pen' of 'Papier', afhankelijk van de productnaam. We GROEPEREN ook OP naam van de maand, om maandelijkse productverkopen te krijgen, van dagelijkse bestellingen.

Nadat je de maandelijkse omzet per product hebt berekend, kun je een grafiektool gebruiken om deze uit te zetten in een lijndiagram, zoals hieronder weergegeven. Hier is een voorbeeld van een lijndiagram dat is gemaakt met Ubiq.

Wist je dat je draaitabellen in Ubiq kunt maken door gewoon te slepen en neer te zetten?

Als u grafieken, dashboards en rapporten wilt maken vanuit de MySQL/PostgreSQL/SQL Server-database, kunt u Ubiq proberen. We bieden een gratis proefperiode van 14 dagen.

  1. Query om alle rijen van de vorige maand te krijgen

  2. Kan een bovenliggende rij niet verwijderen of bijwerken:een beperking van een externe sleutel mislukt

  3. Wat is Greenplum-database? Inleiding tot de Big Data-database

  4. Trigger invoegen om een ​​andere tabel bij te werken met PostgreSQL