私はsometableのテーブルを持っています:
name |test_date | score
-----------------------
jon |2012:07:01| 95
jon |2012:07:01| 60
jon |2012:07:01| 30
alex |2012:07:01| 80
alex |2012:07:01| 85
alex |2011:05:01| 40
emile|2011:01:01| 89
名前ごとにいくつかの行を取得し、ルールを使用して彼のscore_gradingに関する情報を提供します:score> 79 = A、80> score> 49 = B、それ以外の場合はC。
問題は、私が欲しいことです。同じ日に、学生に同じscore_gradeが複数ある場合、それは1つのscore_gradeとしてカウントされます。たとえば、表では、alexが1日に2回Aを取得していることがわかります。これは、1Aとしてのみカウントされるようにします。
したがって、結果は次のようになります
name | A | B | C
jon | 1 | 1 | 1
alex | 1 | 0 | 1
emily| 1 | 0 | 0
私は次のようなコードしか知りません:
SELECT name,
SELECT SUM(IF(score)>79),1,0)) as A,
SELECT SUM(IF(80>score>49),1,0)) as B,
SELECT SUM(IF(score)<50),1,0)) as C from sometable group by name
なぁ、どうやって「DISTINCT」をつけるの?誰かが解決策を与えることができますか?多分それはDISTINCTを必要としませんか?ありがとう。^^