- ベストアンサー
割合(パーセント)を求めるにはどのようにSQLを書けばよいのでしょうか?
SQLで グループ毎にカウントした数でなくて割合を求めたいのです。 select name, count(*) from データベース名 group by name order by 2 desc; とすると、以下のように200件あるデータで グループ(名前)毎に個数が表示されますが、 田中 70 上村 120 橘川 10 下のように割合(パーセント)を求めるにはどのようにSQLを書けばよいのでしょうか? 田中 70 35% 上村 120 60% 橘川 10 5%
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
MySQL 4.1以降なら、インラインビューを使うと簡単です。 -- MySQL 4.1- select name,cnt,cast(cnt/ttl*100 as signed) as pct from (select name,count(*) as cnt from t0 group by name) as x, (select count(*) as ttl from t0) as y ; MySQL 4.0までの場合は、1回のSQLでは結果を得られません。 temporary tableまたはユーザ変数を利用して、2回のSQLで得る必要があります。ユーザ変数を利用する例を示します。 -- MySQL -4.0 select count(*) into @ttl from t0; select name,count(*),cast(count(*)/@ttl*100 as signed) as pct from t0 group by name ;
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
MySQLの質問をする場合は、バージョンを明記しましょう。 ~4.0、4.1、5.0~で、大幅な機能拡張が行われています。
補足
返事がおそくなりました。 バージョンは4.0と5.0です。