Настроить запрос postgresql

Я использую базу данных postgresql, поскольку я пытаюсь достичь, так как у меня есть два запроса, но я не хочу использовать несколько запросов, так что можно управлять одним запросом?

Запрос 1:

select coalesce(sum("dummy"),0) as sum from generate_series ('2014-09-09 00:00:00'::timestamp,'2014-09-09 23:59:59','1 minute')
minutes(minute) LEFT JOIN report ON 
minutes.minute=date_trunc('minute', report.fetchdate)
AND fetchdate >= '2014-09-09 00:00:00' AND fetchdate <= '2014-09-09 23:59:00'
AND entity_id ='0' group by minute order by minute

ВЫВОД:

Общее количество фиктивных полей для каждой минуты каждого дня означает, что каждый день имеет итоговые (24 * 60 = 1440) записи

Примечание: этот запрос используется для одного дня

Query2:

select date(day)as day,coalesce(sum("dummy"),0) as sum from generate_series ('2014-09-06 00:00:01'::date,'2014-09-12 23:59:59'::date,'1 day'::interval) days(day) LEFT JOIN report ON days.day=date_trunc('day', report.fetchdate) AND entity_id ='0' group by day order by day

ВЫВОД:

give total count of dummy field for each day between day 2014-09-06 to 2014-09-12 it means total 7 records (Date : 6,7,8,9,10,11,12)

Примечание. Этот запрос используется более 1 дня

Требуемый вывод:

1) Необходимо видеть общее количество фиктивных полей каждого дня между указанной датой (вывод второго запроса)

2) Необходимо видеть максимальный вызов каждого дня

Пример: Предположим, что я ищу через два дня, тогда вам нужно разбить единую дату и получить данные за каждую минуту каждой даты и всякий раз, когда у нас есть максимальное количество фиктивных полей определенного дня, тогда вам нужно показать как максимальный выход для каждого дня

1 ответ

select
 date_trunc('day', minute) as day,
 sum(minute_sum) as day_sum,
 max(minute_sum) as max_minute_sum
from (
 select
 minute,
 coalesce(sum("dummy"),0) as minute_sum
 from
 generate_series(
 '2014-09-06'::timestamp,
 '2014-09-13'::timestamp - interval '1 minute',
 '1 minute'
 ) minutes(minute)
 left join
 report on
 minutes.minute = date_trunc('minute', report.fetchdate)
 and entity_id ='0'
 group by minute
) s
group by 1
order by 1

licensed under cc by-sa 3.0 with attribution.