SQLについて質問です。


下記のような試験結果のテーブルがあります。

名前 結果
----------
太郎 優
花子 優
拓也 良
涼子 可
太郎 優
花子 可
拓也 可
涼子 優


そこで、個人が、優を何回、良を何回、可を何回、取ったかを調べ、
下記のような結果を得る事ができるSQL文は可能でしょうか?

名前 優  良 可
-------------------
太郎 2 , 0 , 0
花子 1 , 1 , 0
拓也 0 , 1 , 1
涼子 1 , 0 , 1


名前 優
--------
太郎 2
花子 1
拓也 0
涼子 1

上記のようなSQL文は解るので、現状は結果の数の文だけまわしているという状態ですが、
一行で済むのであれば、変更したいと思いまして質問させていただきます。

※使っているのはMySQLです

宜しくお願い致します。

回答の条件
  • 1人2回まで
  • 登録:2008/01/27 12:54:34
  • 終了:2008/02/01 11:40:57

ベストアンサー

id:lieutar No.1

lieutar回答回数5ベストアンサー獲得回数12008/01/27 13:18:31

ポイント60pt

SELECT 名前

, SUM(CASE 結果 WHEN '優' THEN 1 ELSE 0 END) AS 優

, SUM(CASE 結果 WHEN '良' THEN 1 ELSE 0 END) AS 良

, SUM(CASE 結果 WHEN '可' THEN 1 ELSE 0 END) AS 可

FROM 試験結果

GROUP BY 名前

カラム名の表記などは適当に合わせて下さい.

id:ruijio

ありがとうございます。解決できました。

CASE WHEN THEN などというは始めて知りました。

SQLをちゃんと勉強せねば・・と痛感した次第です。

2008/02/01 11:40:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません