Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Dividir valores numericos entre filas

Estas en el tema de Dividir valores numericos entre filas en el foro de SQL Server en Foros del Web. Estmados, Que tal, tengo una consulta, hay alguna manera de poder realizar una division entre filas...??? sucede que tengo una tabla de 3 columnas: ITEM, ...
  #1 (permalink)  
Antiguo 16/07/2014, 13:43
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 2 meses
Puntos: 5
Pregunta Dividir valores numericos entre filas

Estmados,

Que tal, tengo una consulta, hay alguna manera de poder realizar una division entre filas...??? sucede que tengo una tabla de 3 columnas: ITEM, DIA, CANTIDAD.
en ITEM tengo 4 categorias (Aereo, Fluvial, Terrestre y Total), en DIA estan los del mes en curso, y cantidad un valor entero. ahora deseo sacar un porcentaje diario de cada categoria, para eso tendria que dividir, por ejemplo categoria Areo entre el Total que tengan el mismo dia en ambos....

como podria hacerse esto...??
__________________
Lo que no se....tampoco creo saberlo....
  #2 (permalink)  
Antiguo 16/07/2014, 13:51
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Dividir valores numericos entre filas

Muestranos algunos datos...no se comprende muy bien
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 16/07/2014, 14:00
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Dividir valores numericos entre filas

Cita:
Iniciado por ambichol Ver Mensaje
Estmados,

Que tal, tengo una consulta, hay alguna manera de poder realizar una division entre filas...??? sucede que tengo una tabla de 3 columnas: ITEM, DIA, CANTIDAD.
en ITEM tengo 4 categorias (Aereo, Fluvial, Terrestre y Total), en DIA estan los del mes en curso, y cantidad un valor entero. ahora deseo sacar un porcentaje diario de cada categoria, para eso tendria que dividir, por ejemplo categoria Areo entre el Total que tengan el mismo dia en ambos....

como podria hacerse esto...??
Mande?????????
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 16/07/2014, 14:16
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 2 meses
Puntos: 5
Respuesta: Dividir valores numericos entre filas

La tabla cuenta con los siguientes datos:

TIPO DIA CANTIDAD
AEREO 1 5342
AEREO 2 6504
AEREO 3 5851
AEREO 4 4171
FLUVIAL 1 4479
FLUVIAL 2 4555
FLUVIAL 3 4375
FLUVIAL 4 3269
TERRESTRE 1 30838
TERRESTRE 2 34528
TERRESTRE 3 34434
TERRESTRE 4 30431
TOTAL 1 40659
TOTAL 2 45587
TOTAL 3 44660
TOTAL 4 37871
%AEREO 1 0.131385425
%AEREO 2 0.142672253

Los campos con el % porcentaje son calculados de la manera que indique lineas arriba.... :)
__________________
Lo que no se....tampoco creo saberlo....
  #5 (permalink)  
Antiguo 16/07/2014, 14:33
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Dividir valores numericos entre filas

me explicas con peras y manzanas??? tu entiendes tu requerimiento yo no, cuando dices

en DIA estan los del mes en curso, y cantidad un valor entero. ahora deseo sacar un porcentaje diario de cada categoria, para eso tendria que dividir, por ejemplo categoria Areo entre el Total que tengan el mismo dia en ambos...

a que te refieres? podrias poner como calculas la informacion? ya con eso es mas facil entender que quieres porque sigo sin verle pies ni cabeza....

AYUDAME QUE YO TE AYUDARE
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 16/07/2014, 14:44
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 2 meses
Puntos: 5
Respuesta: Dividir valores numericos entre filas

jejejeje....ok libras, pensaba que era entendible...
bueno, deseo calcular el porcentaje de atencion de un tipo de categoria, el tipo de calculo es:
Total_atenciones_Aerea / Total Atenciones(suma total de las atenciones del dia).
Total_atenciones_Terrestre / Total Atenciones(suma total de las atenciones del dia).
Total_atenciones_Fluvial / Total Atenciones(suma total de las atenciones del dia).
como lo mostre anteriormente, la tabla esta estructurada de esa manera, y veras que el ultimo campo es el calculado que debe respetar la condicion del calculo....
me pude explicar mejor...?
__________________
Lo que no se....tampoco creo saberlo....
  #7 (permalink)  
Antiguo 16/07/2014, 15:02
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Dividir valores numericos entre filas

Código SQL:
Ver original
  1. CREATE TABLE #temp(
  2. tipo VARCHAR(20),
  3. dia INT,
  4. cantidad INT
  5. )
  6.  
  7. INSERT INTO #temp VALUES ('AEREO',1,5342)
  8. INSERT INTO #temp VALUES ('AEREO',2,6504)
  9. INSERT INTO #temp VALUES ('AEREO',3,5851)
  10. INSERT INTO #temp VALUES ('AEREO',4,4171)
  11. INSERT INTO #temp VALUES ('FLUVIAL',1,4479)
  12. INSERT INTO #temp VALUES ('FLUVIAL',2,4555)
  13. INSERT INTO #temp VALUES ('FLUVIAL',3,4375)
  14. INSERT INTO #temp VALUES ('FLUVIAL',4,3269)
  15. INSERT INTO #temp VALUES ('TERRESTRE',1,30838)
  16. INSERT INTO #temp VALUES ('TERRESTRE',2,34528)
  17. INSERT INTO #temp VALUES ('TERRESTRE',3,34434)
  18. INSERT INTO #temp VALUES ('TERRESTRE',4,30431)
  19. INSERT INTO #temp VALUES ('TOTAL',1,40659)
  20. INSERT INTO #temp VALUES ('TOTAL',2,45587)
  21. INSERT INTO #temp VALUES ('TOTAL',3,44660)
  22. INSERT INTO #temp VALUES ('TOTAL',4,37871)
  23.  
  24. SELECT
  25. t1.tipo, t1.dia, t1.cantidad / (t2.total * 1.0) AS promedio
  26.  FROM #temp AS t1
  27. LEFT JOIN
  28. (
  29. SELECT SUM(cantidad) total,dia FROM #temp WHERE tipo<>'total' GROUP BY dia
  30. ) AS t2 ON (t1.dia=t2.dia)
  31. WHERE t1.tipo<>'Total'

resultado:

tipo dia promedio
-------------------- ----------- ---------------------------------------
AEREO 1 0.13138542512112
AEREO 2 0.14267225305459
AEREO 3 0.13101209135691
AEREO 4 0.11013704417628
FLUVIAL 1 0.11016011215229
FLUVIAL 2 0.09991883651040
FLUVIAL 3 0.09796238244514
FLUVIAL 4 0.08631934725779
TERRESTRE 1 0.75845446272657
TERRESTRE 2 0.75740891043499
TERRESTRE 3 0.77102552619793
TERRESTRE 4 0.80354360856592
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 16/07/2014 a las 15:09
  #8 (permalink)  
Antiguo 16/07/2014, 17:03
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 2 meses
Puntos: 5
Respuesta: Dividir valores numericos entre filas

Libras, realice esta consulta que a mi parecer me devuelve la misma informacion que deseaba sacar, pero necesito un consejo para ver si esta bien estructurado.
Código SQL:
Ver original
  1. SELECT '%AEREO' TIPO,A.DIA,ROUND(A.CANTIDAD/B.CANTIDAD,3)PRC
  2. FROM REP_DIARIO A INNER JOIN REP_DIARIO B
  3. ON A.TIPO = 'AEREO'
  4. AND B.TIPO = 'TOTAL'
  5. AND A.DIA = B.DIA
__________________
Lo que no se....tampoco creo saberlo....
  #9 (permalink)  
Antiguo 17/07/2014, 07:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Dividir valores numericos entre filas

te funciona, adelante, es casi el mismo codigo que te estoy mostrando, si me preguntas en cuando a optimizacion, como no tengo tus tablas ni datos no sabria decirte si esta bien optimizado...
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: dividir, filas, numericos, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:22.