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

AVGはパーセンテージを生成しません - 平均を生成します! – ManseUK

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

これはわずかです他の答えのいくつかのセクシーなバージョン - ノートth長い(そして多くの世俗的な)を回避するために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

SQLの性的魅力をより高めるために+1。 :) –

関連する問題