Re: Recursive Queries

Поиск
Список
Период
Сортировка
От Olivier Gautherot
Тема Re: Recursive Queries
Дата
Msg-id CAJ7S9TXk9hGKqBfSmkFwHW-Aso_Paj9RCzpwtMLqm2-goFfLRQ@mail.gmail.com
обсуждение исходный текст
Ответ на Recursive Queries  (Alex Magnum <magnum11200@gmail.com>)
Список pgsql-general
Hi Alex,


On Thu, Apr 16, 2020 at 10:36 AM Alex Magnum <magnum11200@gmail.com> wrote:
Hi,
I have a simple table with singup timestamps

What I would like to do is to create a table as shown below that displays the counts per our for the past n dates.

I can do this with a function but is there an easy way to use recursive queries?


     Counts per hour for given date
HR   2020-04-01  2020-04-02  ... 2020-04-10
00      38           33              36  
01      33           26              18
02      26           36              17
03      36           18              10
04      18           17               3
05      17           10               3
06      10            3               6
07       3            3              10
.        3            6              13
.        6           10              22
.       10           13              12
22      13           22               9
23      22           11               8


Thanks for any suggestions. 
A

You don't need subqueries. The WHEN statement can help you in this case (a bit tedious to write but fast to run):

WITH q AS (select date_part('hour', ts) AS hr, ts::date AS mydate FROM your_table_or_query)
SELECT hr,
    sum(CASE WHEN mydate = '2020-04-01'::date THEN 1 ELSE 0 END),
    sum(CASE WHEN mydate = '2020-04-02'::date THEN 1 ELSE 0 END),
    ...
FROM q ORDER BY hr;


Hope it helps
--
Olivier Gautherot
Tel: +33 6 02 71 92 23 

В списке pgsql-general по дате отправления:

Предыдущее
От: Edward Macnaghten
Дата:
Сообщение: Re: Recursive Queries
Следующее
От: Edward Macnaghten
Дата:
Сообщение: Re: Recursive Queries