2016-07-19 4 views
0

Скажем, у меня есть следующая таблица:Как использовать группу по умолчанию?

+-----------+------------+-------+ 
| 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

Смежные вопросы