Сравнение 2 результатов запроса в запросе PostgreSQL - PullRequest
0 голосов
/ 29 апреля 2020

Мне интересно, можно ли сравнить 2 результата запроса в один в PostgreSQL. Например: у меня есть эти данные за весь месяц марта, затем у меня есть другие данные за весь месяц апреля.

Этот запрос я использую для получения данных за март месяц:

    SELECT availability_date, ROUND(AVG(availability_percentage),2)
FROM dashboard.availability
WHERE availability_date BETWEEN '2020-03-01' AND '2020-04-01'
GROUP BY availability_date
ORDER BY availability_date ASC

Тогда это тот, который я использую для получения данных за апрель месяц:

SELECT availability_date, ROUND(AVG(availability_percentage),2)
FROM dashboard.availability
WHERE availability_date BETWEEN '2020-04-01' AND '2020-05-01'
GROUP BY availability_date
ORDER BY availability_date ASC

Могу ли я объединить их в один данные, чтобы я можно отобразить результат за оба месяца? Например:

Month     percentage
March      100%
February   85%

1 Ответ

1 голос
/ 29 апреля 2020

Да, используйте условное агрегирование:

SELECT
    ROUND(AVG(availability_percentage)
       FILTER (WHERE availability_date BETWEEN '2020-03-01' AND '2020-04-01') , 2) AS avg_march,
    ROUND(AVG(availability_percentage)
       FILTER (WHERE availability_date BETWEEN '2020-04-01' AND '2020-05-01'), 2) AS avg_april
FROM dashboard.availability
WHERE availability_date BETWEEN '2020-03-01' AND '2020-05-01';

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

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