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

Come calcolare il margine in MySQL

È importante calcolare il profitto per ogni azienda. Se il tuo sito Web o negozio online funziona su MySQL, puoi facilmente calcolare il margine in MySQL. In questo articolo, vedremo come calcolare il margine in MySQL, calcolare il margine per ogni prodotto e anche calcolare il margine giornaliero.


Come calcolare il margine in MySQL

Supponiamo che tu abbia due tabelle acquisti(id_ordine, ID_prodotto, quantità, prezzo_costo, data_ordine ) e vendite(id_ordine, ID_prodotto, quantità, prezzo_vendita, data_ordine) che contengono i dettagli delle informazioni di acquisto e vendita di ciascun prodotto.

mysql> create table purchases(order_id int, 
            product_id int, 
            quantity int, 
            cost_price int, 
            order_date date);

mysql> insert into purchases(order_id, product_id,
      quantity, cost_price, order_date)
      values(1,101,10,30,'2021-01-01'),
      (2,102,15,50,'2021-01-02'),
      (3,101,30,80,'2021-01-03'),
      (4,103,20,35,'2021-01-04'),
      (5,105,10,50,'2021-01-05'),
      (6,104,17,40,'2021-01-06'),
      (7,101,30,45,'2021-01-07'),
      (8,102,60,60,'2021-01-08'),
      (9,110,19,70,'2021-01-09'),
      (10,108,20,80,'2021-01-10');

mysql> select * from purchases;
 +----------+------------+----------+------------+------------+
 | order_id | product_id | quantity | cost_price | order_date |
 +----------+------------+----------+------------+------------+
 |        1 |        101 |       10 |         30 | 2021-01-01 |
 |        2 |        102 |       15 |         50 | 2021-01-02 |
 |        3 |        101 |       30 |         80 | 2021-01-03 |
 |        4 |        103 |       20 |         35 | 2021-01-04 |
 |        5 |        105 |       10 |         50 | 2021-01-05 |
 |        6 |        104 |       17 |         40 | 2021-01-06 |
 |        7 |        101 |       30 |         45 | 2021-01-07 |
 |        8 |        102 |       60 |         60 | 2021-01-08 |
 |        9 |        110 |       19 |         70 | 2021-01-09 |
 |       10 |        108 |       20 |         80 | 2021-01-10 |
 +----------+------------+----------+------------+------------+

mysql> create table sales(order_id int, 
        product_id int, 
        quantity int, 
        selling_price int, 
        order_date date);

mysql> insert into sales(order_id, product_id, 
       quantity, selling_price, order_date)
       values(1,101,8,70,'2021-01-01'),
       (2,102,10,150,'2021-01-02'),
       (3,101,25,280,'2021-01-03'),
       (4,103,20,135,'2021-01-04'),
       (5,105,10,350,'2021-01-05'),
       (6,104,15,140,'2021-01-06'),
       (7,101,20,65,'2021-01-07'),
       (8,102,50,160,'2021-01-08'),
       (9,110,15,120,'2021-01-09'),
       (10,108,15,180,'2021-01-10');

mysql> select * from sales;
+----------+------------+----------+---------------+------------+
| order_id | product_id | quantity | selling_price | order_date |
+----------+------------+----------+---------------+------------+
|        1 |        101 |        8 |            70 | 2021-01-01 |
|        2 |        102 |       10 |           150 | 2021-01-02 |
|        3 |        101 |       25 |           280 | 2021-01-03 |
|        4 |        103 |       20 |           135 | 2021-01-04 |
|        5 |        105 |       10 |           350 | 2021-01-05 |
|        6 |        104 |       15 |           140 | 2021-01-06 |
|        7 |        101 |       20 |            65 | 2021-01-07 |
|        8 |        102 |       50 |           160 | 2021-01-08 |
|        9 |        110 |       15 |           120 | 2021-01-09 |
|       10 |        108 |       15 |           180 | 2021-01-10 |
+----------+------------+----------+---------------+------------+

Useremo queste tabelle per calcolare il margine in MySQL. Ecco la formula del margine.

margine di profitto =(quantità venduta*prezzo di vendita – quantità acquistata*prezzo di costo )/quantità venduta*prezzo di vendita

Una volta ottenute le vendite totali e il costo totale, è possibile modificare la formula sopra in base alle proprie esigenze per calcolare il margine lordo, il margine netto, ecc.


Calcola il margine totale in MySQL

Ecco la query SQL per calcolare il margine di profitto totale.

mysql> select (total_sales-total_cost)*100/total_sales as total_margin 
      from
      (select sum(quantity*cost_price) as total_cost 
         from purchases) as total_purchases,
      (select sum(quantity*selling_price) as total_sales 
         from sales) as total_sales;
 +--------------+
 | total_margin |
 +--------------+
 |      57.6059 |
 +--------------+

Esaminiamo in dettaglio la query di cui sopra.

Calcoliamo il costo totale e il totale delle vendite separatamente utilizzando le sottoquery

select sum(quantity*cost_price) as total_cost from purchases

e

select sum(quantity*selling_price) as total_sales from sales

e quindi utilizza il risultato di queste sottoquery per calcolare il margine di profitto totale.

Bonus letto:come ottenere più conteggi in MySQL


Calcola il margine del prodotto in MySQL

Ecco la query SQL per calcolare il margine di profitto per ogni prodotto.

mysql> select total_purchases.product_id,
      (total_sales-total_cost)*100/total_sales as total_margin 
      from
      (select product_id,sum(quantity*cost_price) as total_cost          
          from purchases 
          group by product_id) as total_purchases,
      (select product_id,sum(quantity*selling_price) as total_sales 
          from sales 
          group by product_id) as total_sales 
          where total_purchases.product_id=total_sales.product_id;
 +------------+--------------+
 | product_id | total_margin |
 +------------+--------------+
 |        101 |      54.2889 |
 |        102 |      54.2105 |
 |        103 |      74.0741 |
 |        104 |      67.6190 |
 |        105 |      85.7143 |
 |        108 |      40.7407 |
 |        110 |      26.1111 |
 +------------+--------------+

Nella query precedente, utilizziamo le seguenti due sottoquery per calcolare separatamente le vendite e i costi per ciascun prodotto.

select product_id,sum(quantity*cost_price) as total_cost          
   from purchases group by product_id

e

select product_id,sum(quantity*selling_price) as total_sales 
   from sales group by product_id

Quindi uniamo il risultato di queste due sottoquery in base a product_id colonna per calcolare il margine di profitto totale per ciascun prodotto.


Calcola il margine giornaliero in MySQL

Allo stesso modo, puoi calcolare il margine di profitto giornaliero utilizzando la seguente query SQL.

mysql> select total_purchases.order_date,(total_sales-total_cost)*100/total_sales as total_margin 
     from
      (select date(order_date) as order_date,
        sum(quantity*cost_price) as total_cost 
        from purchases group by date(order_date)
      ) as total_purchases,   
      (select date(order_date) as order_date,
        sum(quantity*selling_price) as total_sales 
        from sales group by date(order_date)
      ) as total_sales 
    where total_purchases.order_date=total_sales.order_date;
 +------------+--------------+
 | order_date | total_margin |
 +------------+--------------+
 | 2021-01-01 |      46.4286 |
 | 2021-01-02 |      50.0000 |
 | 2021-01-03 |      65.7143 |
 | 2021-01-04 |      74.0741 |
 | 2021-01-05 |      85.7143 |
 | 2021-01-06 |      67.6190 |
 | 2021-01-07 |      -3.8462 |
 | 2021-01-08 |      55.0000 |
 | 2021-01-09 |      26.1111 |
 | 2021-01-10 |      40.7407 |
 +------------+--------------+

Nella query precedente, utilizziamo le seguenti due sottoquery per calcolare separatamente le vendite e i costi per ogni giorno.

select date(order_date) as order_date,sum(quantity*cost_price) as total_cost 
from purchases group by date(order_date)

e

select date(order_date) as order_date,sum(quantity*selling_price) as total_sales 
from sales group by date(order_date)

Quindi uniamo il risultato di queste due sottoquery in base a data_ordine colonna per calcolare il margine totale per ogni giorno.


Calcola il margine in Ubiq

Lo strumento Ubiq Reporting supporta tutte le query SQL di cui sopra e semplifica la visualizzazione dei risultati SQL in diversi modi. Ti consente anche di creare dashboard e grafici dai dati MySQL. Ecco la query SQL per calcolare giornalmente il margine in Ubiq.

Infatti, dopo aver eseguito la query, puoi semplicemente fare clic su un tipo di visualizzazione per tracciare il risultato in un grafico.

Hai bisogno di uno strumento di reporting per MySQL? Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!