У меня есть такая таблица:
id | userid | operation_id | category | date
===============================================
1 bobdole 2 Major 2011-02-20
2 bobdole 3 Major 2011-02-20
3 bobdole 2 Minor 2011-02-20
4 bobdole 2 Minor 2011-02-20
5 bobdole 2 Minor 2011-02-21
6 not_bob 2 Minor 2011-02-21
И я хотел бы написать запрос так, чтобы в каждой записи отображалось количество основных и второстепенных ошибок в день на человека.Например:
userid | operation_id | Major faults| Minor faults | date
=================================================================
bobdole 2 1 2 2011-02-20
bobdole 3 1 0 2011-02-20
bobdole 2 0 1 2011-02-21
not_bob 2 0 1 2011-02-21
Как мне сказать, что я хотел бы подсчитать идентификатор пользователя, operation_id, количество ошибок, которые = "Major", количество ошибок, которые = "Minor" и сгруппированы по дате?
Вот что я попробовал:
SELECT employee, operation_id, date_entered, orgin, grading,
COUNT(grading = "Major"), count(grading = "Minor")
FROM faults
JOIN company.tblusers on faults.employee = compeny.tblusers.sugar_name
WHERE ncr_ncr.date_entered > date("2011-01-01")
AND protocase.tblusers.departmentid = 8
AND orgin != "unknown"
AND orgin != "Unknown"
AND orgin IS NOT NULL
GROUP BY employee, date_entered, operation_id
РЕДАКТИРОВАТЬ: Это сработало:
select
employee,
userid,
operation_id,
date(date_entered),
orgin,
SUM(case when grading = 'Major' then 1 else 0 end),
SUM(case when grading = 'Minor' then 1 else 0 end)
from ncr_ncr
join company.tblusers on ncr_ncr.employee = company.tblusers.sugar_name
where
ncr_ncr.date_entered > date("2011-01-01")
and company.tblusers.departmentid = 8
and orgin != "unknown"
and orgin != "Unknown"
and date_entered is not null
and orgin is not null
AND(grading = "Minor" or grading = "Major")
group by employee, date(date_entered), operation_id
order by date(date_entered), employee, operation_id