2016-07-19 4 views
0

のは、私は、次の表があるとしましょう:group byをデフォルト値で使用するにはどうすればよいですか?

+-----------+------------+-------+ 
| quiz_type | student_id | score | 
+-----------+------------+-------+ 
| class  | NULL  | 10 | 
+-----------+------------+-------+ 
| class  | NULL  | 9  | 
+-----------+------------+-------+ 
| student | A   | 5  | 
+-----------+------------+-------+ 
| student | B   | 7  | 
+-----------+------------+-------+ 
| student | A   | 6  | 
+-----------+------------+-------+ 

は、私は、各学生のためのスコアの合計を取得したいが、すべての学生のためのクラススコアを含める必要があります。つまり、結果表は次のようになります:

+------------+-------+ 
| student_id | score | 
+------------+-------+ 
| A   | 30 | 
+------------+-------+ 
| B   | 26 | 
+------------+-------+ 

実際には、quiz_type列は存在しません。私はGROUP BY student_idを実行する必要がありますが、すべてのグループに値NULLを含めてください。私はかなりこれで苦労してきました。良い解決策はありますか?

+2

たぶん問題は、データベースの設計が改善を必要としていることでしょうか? – MageeWorld

答えて

2

あなたはこれを試すことができます。

select 
    student_id, 
    sum(score) + (select sum(score) from yourtable where student_id is null) as score 
from yourtable 
where student_id is not null 
group by `student_id` 

SQLFiddle Demo

+1

私は同じ解決策を持っていますが、私は遅くなります –

+0

答えをありがとう!すべての得点の標準偏差を求めたいのですが? – areke

+0

@arekeこれは別の質問です。 :-( – Blank