Количество раз в 15 минут за последние 4 дня по столбцам

#sql #pivot #case

#sql #сводная #случай

Вопрос:

У меня есть этот запрос, который каждые 15 минут выдает мне, сколько получено «НЕТ».

 select trunc(rcv_dt,'hh24')   (trunc(to_char(rcv_dt,'mi')/15)*15)/24/60 as timeline, count(distinct(NO)) as count
from tbl where trunc(rcv_dt) = trunc(SYSDATE -1)
group by  trunc(rcv_dt,'hh24')   (trunc(to_char(rcv_dt,'mi')/15)*15)/24/60
order by trunc(rcv_dt,'hh24')   (trunc(to_char(rcv_dt,'mi')/15)*15)/24/60
  

Вывод:

введите описание изображения здесь

Однако мне нужны аналогичные данные за последние несколько дней в приведенном ниже выходном формате. Нужна ваша помощь в этом.

введите описание изображения здесь

Ответ №1:

Я думаю, это делает то, что вы хотите:

 select (trunc(to_char(rcv_dt, 'mi')/15)*15)/24/60 as timeline, 
       count(distinct case when trunc(rcv_dt,'hh24') = date '2019-03-13' then NO end) as no_20190313,
       count(distinct case when trunc(rcv_dt,'hh24') = date '2019-03-12' then NO end) as no_20190312,
       count(distinct case when trunc(rcv_dt,'hh24') = date '2019-03-11' then NO end) as no_20190311
from tbl
where trunc(rcv_dt) >= date '2019-03-11'
group by (trunc(to_char(rcv_dt,'mi')/15)*15)/24/60
order by (trunc(to_char(rcv_dt,'mi')/15)*15)/24/60;
  

Комментарии:

1. Спасибо за ваш ответ. Но is выдает только 4 строки. также первая строка не указывает правильное время.

2. ВРЕМЕННАЯ ШКАЛА no_20190313 no_20190312 no_20190311 0 108 81 78 0.010416667 14 11 8 0.020833333 6 17 8 0.03125 7 3 11