Объедините несколько операторов подсчета в один оператор выбора - PullRequest
2 голосов
/ 14 февраля 2011

У меня есть таблица для отслеживания успеха, неудачи студентов, сдающих экзамен по курсу следующим образом.

      Column   |  Type   |                        Modifiers                        
------------+---------+---------------------------------------------------------
 id         | integer | not null default nextval('assessment_id_seq'::regclass)
 student_id | integer | not null
 lesson_id  | integer | not null
 correct    | boolean | default false

Теперь мне нужно составить отчет о студентах.В отчете просто показано количество попыток как общее, а количество правильных - как оценка - за урок.

select count(*) as score from assessment where correct = true and student_id = 1 group by lesson_id 

select count(*) as total_attempts from assessment  where student_id = 1 group by lesson_id .

Я хотел бы объединить эти два запроса в один запрос.Как я могу это сделать ..

Спасибо.

1 Ответ

3 голосов
/ 14 февраля 2011
SELECT COUNT(*) as total_attempts,
  COUNT(CASE WHEN correct = true THEN 1 ELSE NULL END) as score
FROM assessment
WHERE student_id = 1
GROUP BY lesson_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...