È 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!