MySQLである値の総数からある値の総数の割合を取得するためのもの
備忘録として
環境
MySQL 8.0
やりたいこと
以下のテーブルからclass 1に所属する男の割合を取得する
name | class | gender |
---|---|---|
taro | 1 | 男 |
hanako | 2 | 女 |
jiro | 2 | 男 |
saburo | 2 | 男 |
junko | 1 | 女 |
shiro | 2 | 男 |
SQL文
SQL1
SELECT class,gender,count(*) as count,
concat(round((sum(case gender WHEN '男' THEN 1 ELSE 0 END)/count(*) * 100),1),'%') as per
FROM student
WHERE gender='男'
AND class='1'
GROUP BY class
結果
class | gender | count | per |
---|---|---|---|
1 | 男 | 3 | 75.0% |
まとめ
他に良い方法があればよろしくお願いいたします。