2012-01-07 23 views
5
Select * from Namelist; 
Name  Age 
Sathish 25 
Sathish 65 
Sathish 55 
Sathish 45 
Sathish 35 
Jana  55 
Jana  25 
Jana  10 
Bala  55 
Bala  26 

Cómo obtener el valor porcentual para el formato dado;Cálculo del porcentaje del recuento de grupos (*)

Name Count Percentege 
Sathish 5  50% 
Jana  3  30% 
Bala  2  20% 

¿Le gustaría compartir la consulta sql?

+1

Sathish - ¿Le gustaría a aceptar en una de estas respuestas? Han pasado algunas semanas. Ponemos a su disposición el trabajo: lo menos que puede hacer es aceptar uno o comentar que ninguno de estos funciona para usted – Bohemian

+0

No haga eso en SQL (llevará mucho tiempo), use su lenguaje de programación en su lugar. –

Respuesta

2

Esta consulta (no probado) debería funcionar:

SELECT Name, 
COUNT(*) AS Count, 
(COUNT(*)/_total) * 100 AS Percentege 
FROM Namelist, 
(SELECT COUNT(*) AS _total 
    FROM Namelist) AS myTotal 
GROUP BY Name; 
1

sustituir a nombre de la columna y probar este:

SELECT iName, 
    COUNT(iName) AS `Count`, 
    concat(FORMAT(((COUNT(iName) * 100)/NewPeople.iCount),2),'%') AS `Percentage` 
FROM people, (SELECT COUNT(iName) AS iCount FROM people) NewPeople 
GROUP BY iName; 

Salida:

Name Count Percentage 
Sathish 5  50.00% 
Jana  3  30.00% 
Bala  2  20.00% 
+0

AVG no produce un porcentaje: ¡produce el promedio! – ManseUK

1
select 
name, 
count(name) as `count`, 
count(name)/(select count(*) from namelist)*100 as pct 
from namelist 
group by name 
10

Este es un poco versión más sexy de algunas de las otras respuestas - note th e uso de sum(100) para evitar el más largo (y más mundanas) count(*) * 100 :)

select name, count(*) as count, sum(100)/total as percentage 
from namelist 
cross join (select count(*) as total from namelist) x 
group by 1 
+1

+1. Buena solución. –

+1

+1 para aumentar el atractivo sexual de SQL. :) –

Cuestiones relacionadas