MYSQL: вычислить сумму столбца, сгруппированного по двум различным условиям в одном запросе. - PullRequest
0 голосов
/ 26 января 2020

Скажите, у меня есть эта упрощенная структура таблицы с этими примерами данных:

id | duration_seconds (int) | is_billable (boolean)
1  | 100                    | false
2  | 500                    | true
3  | 100                    | false
4  | 150                    | true

Можно ли получить подобные результаты из одного запроса?

total_duration | billable_duration | non_billable_duration
850            | 650               | 200

1 Ответ

2 голосов
/ 26 января 2020

Вы можете использовать условное агрегирование, чтобы получить разные суммы в одном запросе:

SELECT SUM(duration_seconds ) AS total_duration,
       SUM(CASE WHEN is_billable THEN duration_seconds ELSE 0 END) AS billable_duration,
       SUM(CASE WHEN NOT is_billable THEN duration_seconds ELSE 0 END) AS non_billable_duration
FROM yourtable

Вывод (для ваших примеров данных)

total_duration  billable_duration   non_billable_duration
850             650                 200

Демонстрация по SQLFiddle

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