我有一张桌子:
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,那么它将算作一个 score_grade。比如表中我们可以看到alex一天内两次得到A,我希望它只算1个A。
所以结果将是
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
Nha,我如何在上面加上“DISTINCT”?有人可以给出解决方案吗?也许它不需要 DISTINCT?谢谢。^^