0

メンバーの種類ごとに選出された人の割合を計算したいのですが、これを行うことができました:

SELECT Member, COUNT(Name) * 100 / 
    (SELECT COUNT(*) FROM 'results' WHERE Member= '1' ) AS 'perc' 
FROM 'results' 
    WHERE elected='yes' AND Member = '1'

しかし、私はすべてのメンバー値に対してそれを行いたいです(したがって、「0」も)

私のテーブルは次のようになります。

Name     member     Elected
----------------------------
joe      0          yes
ann      1          no
jef      0          no

これは私が望む結果です:

Member    Percentage
---------------------
0         50%
1         0%
4

4 に答える 4

1

次のようなものを使用できるはずです。

select member,
  coalesce(count(case when elected = 'yes' then 1 end)/count(*), 0) * 100 Percentage
from results
group by member

デモで SQL Fiddle を参照してください

結果:

| MEMBER | PERCENTAGE |
-----------------------
|      0 |         50 |
|      1 |          0 |
于 2013-01-03T15:03:30.597 に答える
1
SELECT Member, 
   Sum(Case When elected='yes' Then 1 
            Else 0 End) / COUNT(*) 'perc' 
FROM 'results' 
group by Member
于 2013-01-03T15:04:54.750 に答える
0

あなたのクエリは

SELECT Member, 
(COUNT(Case When elected='yes' Then 1 Else NULL End) / COUNT(*)) * 100 'perc' 
FROM 'results'     
group by Member
于 2013-01-03T15:07:53.773 に答える
0

試してみてくださいGroup By Member

sqlfiddle.comを使用している場合は、簡単に解決できます。

ブルーフィートから盗み出そ

select member,
  concat(FLOOR(coalesce(count(case when elected = 'yes' then 1 end)/count(*), 0) * 100), '%')  Percentage
from results
group by member
于 2013-01-03T15:10:20.383 に答える