СУММА значение, основанное на времени и дате - PullRequest
0 голосов
/ 26 декабря 2018

Мне нужна помощь для добавления различных значений чтения временного интервала для даты.

Предположим, в день они равны 24 часам, и я хочу получить сумму 4-8 вечера в одной строке и другой, то есть 0-4 вечера и 9 вечера.12:00 в одной строке.

Я использовал следующий запрос:

SELECT
 ennt_date,
 CASE
  WHEN to_number(TO_CHAR(dta.end_time,'HH24:MI:SS'),'sssss')/60 >= 960
  AND  to_number(TO_CHAR(dta.end_time,'HH24:MI:SS'),'sssss') /60 <= 
 1200
 THEN   (reads)
 ELSE   (reads)
 END 
from MD_data
group by ennt_date 

получаю сообщение об ошибке:

регистр не группируется по функции

Ответы [ 3 ]

0 голосов
/ 26 декабря 2018

Это должно работать.Вы можете настроить временные диапазоны hhGroup в соответствии с вашими потребностями.Мне было неясно, прошло ли 4 вечера до 8 вечера до 7:59 (8 вечера) или до 8:59 (9 вечера)

SELECT ennt_date
       ,hhGroup
       ,Count(1) as cnt
FROM   
    (Select 
        ennt_date
        ,CAST( dta.end_time as time) as tm
        ,DATEPART(HH, dta.end_time ) as hh
        ,CASE When DATEPART(HH, dta.end_time ) < 16 Then '0am-4pm'
              When DATEPART(HH, dta.end_time ) < 20 Then '4pm-8pm'
              When DATEPART(HH, dta.end_time ) < 21 Then '8pm-9pm'
              When DATEPART(HH, dta.end_time ) < 24 Then '9pm-mid'
         END as hhGroup
     From md_data
    ) as mm
GROUP  BY ennt_date, hhGroup 
0 голосов
/ 26 декабря 2018

Пример результатов поможет, но я думаю, что вы хотите:

SELECT trunc(ennt_date),
       ( ceil( extract(hour from ennt_date) / 4.0) * 4 - 4 ) as hour,
       SUM(reads)
from MD_data
group by trunc(ennt_date),
         ceil( extract(hour from ennt_date) / 4.0);
0 голосов
/ 26 декабря 2018

Вы можете разделить день на 4-часовые сегменты и суммировать каждый по отдельности:

with
x as (
  select
    (extract(hour from end_time) div 4) * 4 as fragment,
    reads
  from md_data
)
select
  fragment,
  sum(reads)
from x
group fragment
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...