sql >> Base de Datos >  >> RDS >> Mysql

Cómo calcular el margen en MySQL

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!