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

como saco un porcentaje

Estas en el tema de como saco un porcentaje en el foro de SQL Server en Foros del Web. hola tengo este query y necesito sacar el gran total de todos los status y despues que porcentaje son ventas gracias por la ayuda soy ...
  #1 (permalink)  
Antiguo 25/09/2012, 16:20
 
Fecha de Ingreso: septiembre-2012
Mensajes: 1
Antigüedad: 11 años, 6 meses
Puntos: 0
como saco un porcentaje

hola tengo este query y necesito sacar el gran total de todos los status y despues que porcentaje son ventas gracias por la ayuda soy nueva en esrto del sql

select status_rte as status, COUNT (*) as total
from TWREGISTROTEL where (FECHA_RTE >= CONVERT (datetime,'2012-07-01 00:00:00',102))
and (FECHA_RTE <= CONVERT (datetime,'2012-07-31 23:59:59',102))
and STATUS_RTE not like '11%' group by STATUS_RTE
order by STATUS_RTE desc

status total
ventas 3341
quejas 29
informacion 5690
  #2 (permalink)  
Antiguo 25/09/2012, 16:30
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: como saco un porcentaje

si sacamos el total de llamadas o de productos / el total de ventas seria de este modo:


Código SQL:
Ver original
  1. SELECT  
  2. CAST((isnull((
  3. SELECT COUNT (*)
  4. FROM TWREGISTROTEL WHERE (FECHA_RTE >= CONVERT (datetime,'2012-07-01 00:00:00',102))
  5. AND (FECHA_RTE <= CONVERT (datetime,'2012-07-31 23:59:59',102))
  6. AND STATUS_RTE NOT LIKE '11%' AND STATUS='ventas'
  7. ),0))/CAST(isnull(total,0) AS DECIMAL(10,4)) AS DECIMAL (10,4))
  8. FROM(
  9. SELECT COUNT (*) AS total
  10. FROM TWREGISTROTEL WHERE (FECHA_RTE >= CONVERT (datetime,'2012-07-01 00:00:00',102))
  11. AND (FECHA_RTE <= CONVERT (datetime,'2012-07-31 23:59:59',102))
  12. AND STATUS_RTE NOT LIKE '11%'
  13. ) t1
  14.  
  15. Con esto sacas un porcentaje en SQL server:
  16. CAST((isnull(ventas,0))/CAST(isnull(total,0) AS DECIMAL(10,4)) AS DECIMAL (10,4))  AS percent


saludos!
__________________
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; 25/09/2012 a las 16:36
  #3 (permalink)  
Antiguo 25/09/2012, 17:04
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: como saco un porcentaje

Lo que yo no me explico es para que estan haciendo el CONVERT de la fecha
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 26/09/2012, 08:24
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: como saco un porcentaje

Yo lo haría así:
Código SQL:
Ver original
  1. SELECT  *,
  2.         CAST(total AS FLOAT)/SUM(total) OVER()
  3. FROM    (SELECT status_rte AS STATUS,
  4.             COUNT (*) AS total
  5.         FROM    TWREGISTROTEL
  6.         WHERE   FECHA_RTE >= CONVERT (datetime,'2012-07-01 00:00:00',102)
  7.             AND FECHA_RTE <= CONVERT (datetime,'2012-07-31 23:59:59',102)
  8.             AND STATUS_RTE NOT LIKE '11%'
  9.         GROUP BY STATUS_RTE) T
  10. ORDER BY STATUS DESC;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #5 (permalink)  
Antiguo 26/09/2012, 11:10
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: como saco un porcentaje

Perdonen mi insistencia, para que el CONVERT, ¿que caso tiene?
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 26/09/2012, 12:37
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: como saco un porcentaje

el que pregunta quiere asegurarse que la informacion este en datetime format...porque de ahi en mas no le veo sentido jejejeje
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 26/09/2012, 15:01
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: como saco un porcentaje

Yo no se porque cortesjeanette escribió así, pero hay que tomar en cuenta que '20120701' no es una fecha sino una cadena, y el sistema generalmente la convierte en DateTime implicitamente.

No es obligatorio convertir explicitamente como cortesjeanette has hecho,
pero tampoco es redundante.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #8 (permalink)  
Antiguo 26/09/2012, 15:59
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: como saco un porcentaje

Analicemos esto:

LAS FECHAS, en TODOS los motores de bases de datos, las fechas se guardan de forma NUMERICA, por tanto, cuando yo hago un:

WHERE MyCampoFecha >= '20120731'

IMPLICITAMENTE la cadena '20120731', se convierte en NUMERICO de forma automatica y se hace la comparacion de una forma mas eficiente.

Mientras que si utilizo el CONVERT(DATETIME, '2012-07-31 23:59:59', 102), se hace una conversion y la respuesta al query sera mucho menos eficiente.
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 27/09/2012, 01:46
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: como saco un porcentaje

iislas- cuando yo hago la siguiente consulta
Select '20120731'/2;
el sistema me devuelve 10060365 que es el medio del numero 20,120,731 (a pesar que el valor numerico de la fecha 31/07/2012 es 41,119).

Si hago la siguiente consulta
Select Cast('20120731' As DateTime)/2;
el sistema me arroja un error porque a pesar que la fecha esta almacenada como un valor numerico, dividir la fecha en dos no tiene sentido.

Me parece que concordamos que las fechas estan almacenadas como numeros, pero el sistema "sabe" que son fechas y no numeros.
Por lo tanto yo no pienso que la conversion explicita empeora el rendimiento, aúnque es obviamente inecesario.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #10 (permalink)  
Antiguo 27/09/2012, 11:26
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: como saco un porcentaje

GeriReshef, creo que doy por cerrado el tema.....no more comments, many words, little gain
__________________
MCTS Isaias Islas

Etiquetas: porcentaje, query, registro, select, sql
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 04:15.