Mnohokrát budete muset porovnat prodeje produktů podle měsíců vedle sebe, abyste zjistili, jak si vedou. Zde je dotaz SQL pro porovnání prodeje produktů podle měsíce, pokud jsou vaše data uložena v databázích MySQL/PostgreSQL/SQL Server.
Dotaz SQL pro porovnání prodeje produktů podle měsíce
Řekněme, že máte tabulku prodej (datum_objednávky, produkt, sleva) který obsahuje denní prodeje všech vašich produktů.
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 | | ... | ... | ...| +---------+------------+------+
Dotaz SQL pro porovnání prodeje produktů podle měsíce
Ve většině případů budete mít prodejní řádky pro všechny vaše produkty pod sebou, v samostatných řádcích, nikoli v samostatných sloupcích. Pokud chcete porovnat prodeje produktů podle měsíců, musíte tato data seřadit podle produktu sloupec.
Zde je dotaz na sestavení tabulky prodeje podle produktu sloupec. Podíváme se na to podrobně
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 | +------------+------+-------+
Ve výše uvedeném dotazu používáme funkci DATE_FORMAT k získání názvů měsíců od order_date sloupec. Dále používáme IF příkaz k vytvoření kontingenční tabulky podle produktu sloupec. V tomto případě pro každý řádek příkaz IF zkontroluje hodnotu sloupce produktu a přidá hodnotu prodeje do sloupce označeného „Pero“ nebo „Papír“ v závislosti na názvu produktu. Také seskupujeme podle názvu měsíce, abychom získali měsíční prodeje produktů z denních objednávek.
Po výpočtu měsíčního prodeje na produkt můžete pomocí nástroje pro vytváření grafů tento produkt vykreslit do spojnicového grafu, jak je znázorněno níže. Zde je příklad spojnicového grafu vytvořeného pomocí Ubiq.
Věděli jste, že v Ubiq můžete vytvářet kontingenční tabulky pouhým přetažením?
Pokud chcete vytvářet grafy, dashboardy a sestavy z databáze MySQL/PostgreSQL/SQL Server, můžete zkusit Ubiq. Nabízíme 14denní bezplatnou zkušební verzi.