我有一個表sometable:SQL:把一個不同之處在SUM
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與規則的信息: 得分> 79 = A, 80>得分> 49 = B 否則C.
問題是,我想:如果在同一天有一個以上的學生相同的score_grade,比它會計爲一個score_grade。 例如,在上表中我們可以看出,亞歷克斯得到一兩次在一天,我希望它算作只有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'?同時顯示?顯示一個?哪一個? – 2012-07-30 04:58:02
把他們全部展示出來。同一天只有同一個人的分數算作一個 – user1545296 2012-07-30 05:06:59