Вы можете опустить условие WHERE
в ЧАС и GROUP BY
SELECT date,
IF(HOUR BETWEEN '00:00:00' AND '11:59:59','day','night') as period,
SUM(accidents) as numAccidents
FROM vehicles
WHERE Date >= '2012-01-01' AND DATE <= '2012-01-31'
GROUP BY Date, IF(HOUR BETWEEN '00:00:00' AND '11:59:59','day','night')
Это вычисляет «ночь» или «день» с использованием конструкции IF(condition,then,else)
(обратите внимание, что в зависимости от типа вашего часового столбца вам, возможно, придется использовать HOUR >= '00:00:00' AND HOUR <= '11:59:59'
вместо BETWEEN
).
Затем группируются по дате и дню / ночи, чтобы получить общую сумму за день и период.