Es importante calcular el beneficio de cada negocio. Si su sitio web o tienda en línea se ejecuta en MySQL, puede calcular fácilmente el margen en MySQL. En este artículo, veremos cómo calcular el margen en MySQL, calcular el margen para cada producto y también calcular el margen diario.
Cómo calcular el margen en MySQL
Digamos que tiene dos tablas compras(order_id, product_id, cantidad, costo_precio, order_date ) y ventas(id_pedido, id_producto, cantidad, precio_venta, fecha_pedido) que contienen detalles de la información de compra y venta de cada producto.
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 | +----------+------------+----------+---------------+------------+
Usaremos estas tablas para calcular el margen en MySQL. Esta es la fórmula del margen.
margen de beneficio =(cantidad vendida*precio de venta – cantidad comprada*precio de coste )/cantidad vendida*precio de venta
Una vez que obtengamos las ventas totales y el costo total, puede modificar la fórmula anterior según sus requisitos para calcular el margen bruto, el margen neto, etc.
Calcular el margen total en MySQL
Aquí está la consulta SQL para calcular el margen de beneficio total.
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 | +--------------+
Veamos la consulta anterior en detalle.
Calculamos el costo total y las ventas totales por separado usando subconsultas
select sum(quantity*cost_price) as total_cost from purchases
y
select sum(quantity*selling_price) as total_sales from sales
y luego use el resultado de estas subconsultas para calcular el margen de beneficio total.
Lectura adicional:Cómo obtener múltiples conteos en MySQL
Calcular el margen del producto en MySQL
Aquí está la consulta SQL para calcular el margen de beneficio de cada producto.
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 | +------------+--------------+
En la consulta anterior, usamos las siguientes dos subconsultas para calcular por separado las ventas y el costo de cada producto.
select product_id,sum(quantity*cost_price) as total_cost from purchases group by product_id
y
select product_id,sum(quantity*selling_price) as total_sales from sales group by product_id
Luego unimos el resultado de estas dos subconsultas basadas en product_id columna para calcular el margen de beneficio total de cada producto.
Calcular el margen diario en MySQL
Del mismo modo, puede calcular el margen de beneficio diario utilizando la siguiente consulta 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 | +------------+--------------+
En la consulta anterior, usamos las siguientes dos subconsultas para calcular por separado las ventas y el costo de cada día.
select date(order_date) as order_date,sum(quantity*cost_price) as total_cost from purchases group by date(order_date)
y
select date(order_date) as order_date,sum(quantity*selling_price) as total_sales from sales group by date(order_date)
Luego unimos el resultado de estas dos subconsultas basadas en order_date columna para calcular el margen total de cada día.
Calcular Margen en Ubiq
La herramienta Ubiq Reporting admite todas las consultas SQL anteriores y facilita la visualización de los resultados SQL de diferentes maneras. También le permite crear paneles y gráficos a partir de datos de MySQL. Aquí está la consulta SQL para calcular el margen diario en Ubiq.

De hecho, después de ejecutar la consulta, simplemente puede hacer clic en un tipo de visualización para trazar el resultado en un gráfico.

¿Necesita una herramienta de informes para MySQL? Ubiq facilita la visualización de datos en minutos y el monitoreo en paneles en tiempo real. ¡Pruébalo hoy!