Я новичок в SQL, так что простите меня за этот наивный вопрос.
У меня есть диапазон дат, скажем, «20180903 - 20180905», так что 3 дня с 3rd Sep to 5th Sep
.
Теперь для каждого дня у нас есть 24 военных часа в диапазоне от 0-23
, и мы пишем запрос для a range of 4 at a time in a single day
.
Итак, предположим,
select
COUNT(wk_id),
SUM(total_occurances) as total_wk_occurances,
SUM(SUCCEEDED_instances) as total_successful_occurances,
SUM(FAILED_instances) as total_error_occurances
from
(
select w1.wk_id,
COUNT(w1.wk_occurance_id) as total_occurances,
sum(case when w1.status='SUCCEEDED' then 1 else 0 end ) as SUCCEEDED_instances,
sum(case when w1.status !='SUCCEEDED' then 1 else 0 end ) as FAILED_instances
from
work_instances w1
inner join
time_table td2
on
w1.end_time = td2.time_id
where
(td2.military_hour between 0 and 3 and end_date='20180903') group by w1.wf_id
) as sub_q1
Теперь я взял за 20180903
диапазон военных часов 0-3
. и он возвращает строку, как
46 | 224 | 208 | 16
Должен ли я написать один и тот же запрос еще пять раз с диапазонами, такими как 4-7, 8-11, 12- 15, 16-19, 20 - 23
? а затем агрегировать и возвращать набор запросов с 6 строками?
Как мне написать лучше?
Кроме того, это только для 20180903
.
Как это сделать, если для другого 2 days and return all 18 rows each(6 each day)
?
, например
результат может выглядеть как
COUNT | total_wk_occurances | total_succeessful_occurances | total_error_Occurances
46 | 224 | 208 | 16
34 | 100 | 75 | 25
46 | 224 | 208 | 16
34 | 100 | 75 | 25
46 | 224 | 208 | 16
34 | 100 | 75 | 25
46 | 224 | 208 | 16
34 | 100 | 75 | 25
46 | 224 | 208 | 16
34 | 100 | 75 | 25
46 | 224 | 208 | 16
34 | 100 | 75 | 25
46 | 224 | 208 | 16
34 | 100 | 75 | 25
46 | 224 | 208 | 16
34 | 100 | 75 | 25
46 | 224 | 208 | 16
34 | 100 | 75 | 25