我有一个名为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相同,则它将被视为一个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?
谢谢。^^
C
和一个A
,那该怎么办?显示两个?显示一个?哪一个? - Marc B