Как извлечь день из одного столбца на основе отметки времени - PullRequest
0 голосов
/ 09 января 2019

Я ежедневно вставляю данные в базу данных. Мне нужно получить данные одного столбца на основе отметки времени. Мне нужно отобразить использование сегодня и вчера использование на основе отметки времени.

Моя фактическая таблица

name       usage          timestamp
prod        200     2019-01-08 09:22:53.364366
Test        100     2019-01-08 09:22:53.364366
qality      50      2019-01-08 09:22:53.364366
prod        270     2019-01-09 08:22:53.364366
Test        300     2019-01-09 08:22:53.364366
qality      90      2019-01-09 08:22:53.364366

Expecting output:

name       usage(yesterday)     usage(Today)         timestamp
prod        200                  270                2019-01-09 08:22:53.364366
Test        100                  300                2019-01-09 08:22:53.364366
qality      50                   90                 2019-01-09 08:22:53.364366

1 Ответ

0 голосов
/ 09 января 2019

Попробуйте агрегировать по имени, а затем проверьте отметку времени:

SELECT
    name,
    MAX(CASE WHEN timestamp::date = NOW()::date - INTERVAL '1 DAY'
             THEN usage END) AS u_yesterday,
    MAX(CASE WHEN timestamp::date = NOW()::date
             THEN usage END) AS u_today,
    MAX(timestamp) AS timestamp
FROM yourTable
GROUP BY
    name;
...