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

porcentaje de total tabla

Estas en el tema de porcentaje de total tabla en el foro de SQL Server en Foros del Web. que tal soy nuevo en el foro y tengo una duda en hacer una consulta para que me saque el porcentaje de una tabla de ...
  #1 (permalink)  
Antiguo 04/08/2010, 12:30
 
Fecha de Ingreso: agosto-2010
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
porcentaje de total tabla

que tal soy nuevo en el foro y tengo una duda en hacer una consulta para que me saque el porcentaje de una tabla de alumnos y me diga cuantos alumnos en porcentaje estan aprobado y cuantos estan reprobado ejemplo:

alumno calificación
xx------- 9
yy------- 10
zz------- 5
aa------ 6
bb------ 7
qq------ 10
oo------ 5
cc ------ 8
dd------ 6
ee------ 5

en este caso son 10 alumnos, 8 aprobados (deberia de dar 80 % aprobado) y 2 reprobado (deberia de dar 20% reprobado), como sería para poder hacerlo con una sentencia de sql server 2005 para que quede asi en 2 columnas de status y porcentaje y si se puede con el signo de porcentaje o en su caso 0.80 y 0.20:

Status ------- porcentaje

aprobados ----- 80% ó 0.80
reprobados ---- 20% ó 0.20

gracias
  #2 (permalink)  
Antiguo 04/08/2010, 12:58
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: porcentaje de total tabla

Opssssssss, si las matematicas no me fallan, hay 3 reprobados

zz------- 5
oo------ 5
ee------ 5

A menos que alguno de ellos, sea hijo(a) del director del plantel y apruebe a como de lugar, decimos por aca, "haiga sido, como haiga sido"
  #3 (permalink)  
Antiguo 04/08/2010, 13:08
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: porcentaje de total tabla

Aplicando matematicas:

Código SQL:
Ver original
  1. CREATE TABLE #ALUMNO (Nombre VARCHAR(10), calificacion INT)
  2. INSERT INTO #ALUMNO VALUES('xx', 9)
  3. INSERT INTO #ALUMNO VALUES('yy', 10)
  4. INSERT INTO #ALUMNO VALUES('zz', 5)
  5. INSERT INTO #ALUMNO VALUES('aa', 6)
  6. INSERT INTO #ALUMNO VALUES('bb', 7)
  7. INSERT INTO #ALUMNO VALUES('qq', 10)
  8. INSERT INTO #ALUMNO VALUES('oo', 5)
  9. INSERT INTO #ALUMNO VALUES('cc', 8)
  10. INSERT INTO #ALUMNO VALUES('dd', 6)
  11. INSERT INTO #ALUMNO VALUES('ee', 5)
  12.  
  13. SELECT COUNT(Nombre) AS [Total Alumnos],
  14. SUM (CASE WHEN calificacion > 5 THEN 1 ELSE 0 END) AS Aprobados,
  15. CAST(SUM (CASE WHEN calificacion > 5 THEN 1 ELSE 0 END) AS DECIMAL(10,2)) / CAST(COUNT(Nombre) AS DECIMAL(10,2)) AS '%',
  16. SUM (CASE WHEN calificacion <= 5 THEN 1 ELSE 0 END) AS [No aprobados],
  17. CAST(SUM (CASE WHEN calificacion <= 5  THEN 1 ELSE 0 END) AS DECIMAL(10,2)) / CAST(COUNT(Nombre) AS DECIMAL(10,2)) AS '%'
  18. FROM #alumno
  #4 (permalink)  
Antiguo 04/08/2010, 16:24
 
Fecha de Ingreso: agosto-2010
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
Mensaje Respuesta: porcentaje de total tabla

ohh cierto, cierto, me falto contar "ZZ------5" , gracias iislas, tu respuesta es algo similar a lo que necesito, nada más que ¿como podria dejar aprobado y no aprobado dentro de filas y no en columnas?, que las columnas séan Status y porcentaje y la filas los valores, ejemplo :

Status -----|----Porcentaje
---------------------------
aprobados -|---- 0.80
reprobados-|---- 0.20
  #5 (permalink)  
Antiguo 04/08/2010, 17:01
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: porcentaje de total tabla

Bueno, yo en tu caso pondria un poco de esfuerzo y haria algo asi:

Código SQL:
Ver original
  1. SELECT 'APROBADOS' AS STATUS,
  2. LEFT(CAST(SUM (CASE WHEN calificacion > 5 THEN 1 ELSE 0 END) AS DECIMAL(10,2)) / CAST(COUNT(Nombre) AS DECIMAL(10,2)),4) AS '%'
  3. FROM #alumno
  4. UNION
  5. SELECT 'REPROBADOS' AS STATUS,
  6. LEFT(CAST(SUM (CASE WHEN calificacion <= 5  THEN 1 ELSE 0 END) AS DECIMAL(10,2)) / CAST(COUNT(Nombre) AS DECIMAL(10,2)),4) AS '%'
  7. FROM #alumno
  #6 (permalink)  
Antiguo 04/08/2010, 19:22
 
Fecha de Ingreso: agosto-2010
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: porcentaje de total tabla

Gracias iislas, esto era lo que necesitaba y perdon por las molestias pero no soy muy bueno en las consultas de sql y ya tenia 3 dias dandome de topes con esta consulta.

De ante mano muchas gracias.....
  #7 (permalink)  
Antiguo 04/08/2010, 21: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: porcentaje de total tabla

De nada, mi filosofia es, "no le dediques mas de 30 minutos a un problema, voltea a tus lados y consulta de inmediato"

3 dias, son mucho desperdicio de tiempo

Etiquetas: porcentaje, tablas, totales
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 00:02.