2012-01-07 4 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 

얻는 방법 주어진 형식에 대한 백분율 값;그룹 수의 백분율 계산 (*)

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

친절하게 sql 쿼리를 공유합니까?

+1

사티시 - 당신은이 답변에 동의 하시겠습니까? 몇 주 됐어. 우리는 당신을 위해 일합니다 - 당신이 할 수있는 일은 최소한 하나를 받아들이거나 이들 중 어느 것도 당신을 위해 일하지 않는다는 것입니다. – Bohemian

+0

SQL에서 그렇게하지 마십시오 (오랜 시간이 걸릴 것입니다), 대신 프로그래밍 언어를 사용하십시오. –

답변

2

이 쿼리 (테스트하지) 작동합니다 :

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

하는 열 이름을 교체하고이 시도 :

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; 

출력은 :

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

평균은 백분율을 산출하지 않습니다 - 평균을 산출합니다! – ManseUK

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

이것은 약간 다른 답변 중 일부는 더 섹시한 버전입니다. 피할 수 sum(100)의 전자 사용 긴 (더 평범한) 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. 좋은 해결책. –

+1

+1 SQL의 성 매력을 높이기 위해 +1. :) –