SQL Server - PORCENTAJE DE PARTICIPACION CON SQL SERVER

 
Vista:
sin imagen de perfil
Val: 45
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

PORCENTAJE DE PARTICIPACION CON SQL SERVER

Publicado por nick (20 intervenciones) el 24/07/2020 23:57:09
Saludos cordiales,quisiera preguntar como es posible realizar una consulta en sql server para determinar el porcentaje de participacion de las ventas:utilice este codigo pero el resultado no es el correcto:

1
2
3
4
5
6
7
8
9
select p.venta,p.Tipo_Venta, case when p.Tipo_Venta='Detal' then p.venta/sum(p.Venta)
when p.Tipo_Venta='Mayor' then p.venta/sum(p.Venta) end as Porcentaje
from
(select Sum(base)as Venta,case when tipo_venta=1 then 'Detal'
when tipo_venta=0 then 'Mayor' end as Tipo_Venta
from cabecera_pedidos
where fecha >= '01-07-2020' and fecha <= '24-07-2020'
group by Tipo_Venta)p
group by p.Tipo_Venta,p.venta

Deberia ser asi :


Captura

agradezco su ayuda por favor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Wilfredo Patricio Castillo
Val: 268
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

PORCENTAJE DE PARTICIPACION CON SQL SERVER

Publicado por Wilfredo Patricio Castillo (189 intervenciones) el 25/07/2020 20:37:23
Échale ganas con las matemáticas básicas.

Suma el total de las ventas

Suma los importe por tipo de venta
Divide cada importe de tipo de venta/total de ventas y multiplicas x 100 y listo, obtendrás tus porcentajes.

Tu lo que estás haciendo, es sumar cada tipo de venta y dividiéndolo por si mismo, entonces siempre vas a obtener 1, ya que si divides 10 mil entre 10 mil obtendrás 1, se la cantidad que sea que lo dividas entre si mismo siempre obtendrás 1 a menos que sean 0 ambos casos obtendrás una excepción.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 45
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

PORCENTAJE DE PARTICIPACION CON SQL SERVER

Publicado por nick (20 intervenciones) el 25/07/2020 21:55:38
res lo que intentaba hacer con este codigo:
case when p.Tipo_Venta='Detal' then p.venta/sum(p.Venta)
es decir si la venta es al detal que tomara su monto y lo dividiera entre el total de toda la venta,obviamente no lo planteo bien,
no es cuestion de desconocer las matematicas si no de planteamiento,lo que quiero es condicionar que si es detal tome el monto de detal y lo divida entre toda la venta.si lo tienes mas claro que yo te ruego ayudame con el codigo.gracias mi estimado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 268
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

PORCENTAJE DE PARTICIPACION CON SQL SERVER

Publicado por Wilfredo Patricio Castillo (189 intervenciones) el 26/07/2020 03:20:26
Formas deben haber varias, la correcta te la dará Isaías que es el maestro en esos menesteres en este foro.

Pero como no tengo cómo probar ni hacerlo, te dejo esto una salida mala

1
2
3
4
5
6
7
8
9
10
11
declare @TotalVentas As decimal(18,2)
Declare @Contado as decimal(18,2)
declare @Credito as decimal(18,2)
 
set @TotalVentas=(Select SUM(total_venta) from VENTAS	where Fecha_Venta>='01-01-2018' and Fecha_Venta<='31-12-2018')
set @Contado=(Select SUM(total_Venta) from VENTAS where Fecha_Venta>='01-01-2018' and Fecha_Venta<='31-12-2018' and IdFormaPago=1)
set @Credito=(Select SUM(total_Venta) from VENTAS where Fecha_Venta>='01-01-2018' and Fecha_Venta<='31-12-2018' and IdFormaPago>1)
 
 
Select @Contado As Venta,'Contado' As TipoVenta,@Contado/@TotalVentas*100 As Porcentaje
Select @Credito As Venta,'Credito' As TipoVenta,@Credito/@TotalVentas*100 As Porcentaje

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 45
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

PORCENTAJE DE PARTICIPACION CON SQL SERVER

Publicado por nick (20 intervenciones) el 27/07/2020 19:06:51
Gracias por tu interes en ayudar probare tu codigo y te comento a ver que tal,se ve bien,hay que probarlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 45
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

PORCENTAJE DE PARTICIPACION CON SQL SERVER

Publicado por nick (20 intervenciones) el 30/07/2020 06:16:06
Al final resulto tu codigo,pero hay que crear un procedure o una funcion para ajustarlo,si se te ocurre como realizarlo sin variables por favor compartelo conmigo,por el momento me sirve pero tuve que crear un procedure,quedo asi:

1
2
3
4
5
6
7
8
9
10
11
12
Create proc Porcentaje(
@FechaI date,@FechaF date)
as
Declare @TotalVentas as decimal(18,2),@Mayor as decimal(18,2),@Detal as decimal(18,2)
set @TotalVentas=(Select SUM(base) from Cabecera_Pedidos where Fecha>=@FechaI and Fecha<=@FechaF)
set @Mayor=(Select SUM(base) from Cabecera_Pedidos where Fecha>=@FechaI and Fecha<=@FechaF and tipo_venta=1)
set @Detal=(Select SUM(base) from Cabecera_Pedidos where Fecha>=@FechaI and Fecha<=@FechaF and tipo_venta=0)
 
 
Select @Mayor As Venta,'Contado' As TipoVenta,round(@Mayor/@TotalVentas*100,2) As Porcentaje
union
Select @Detal As Venta,'Credito' As TipoVenta,round(@Detal/@TotalVentas*100,2) As Porcentaje


te agradezco tu aporte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar