MySQL: SUM столбца на основе значения другого столбца - PullRequest
2 голосов
/ 31 мая 2019

Я хочу получить сумму столбца, которая основана, если значение другого столбца - это / то.Вот моя структура таблицыРезультат должен быть:

employee_id  ot_hrs leave_1  leave_2
    3          2.3    7.6       5

Спасибо за ваш вклад.

Ответы [ 2 ]

3 голосов
/ 31 мая 2019

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

SELECT employee_id, 
       SUM(overtime_hours) AS ot, 
       SUM(CASE WHEN leave_type = 1 THEN leave_hours ELSE 0 END) AS leave_1, 
       SUM(CASE WHEN leave_type = 2 THEN leave_hours ELSE 0 END) AS leave_2
FROM `table`
GROUP BY employee_id

Выход:

employee_id ot      leave_1     leave_2
3           2.3     7.6         5

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

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

1 голос
/ 31 мая 2019

можно использовать max() со случаем, когда

SELECT employee_id, 
       max(overtime_hours) AS ot, 
       max(CASE WHEN leave_type = 1 THEN leave_hours  END) AS leave_1, 
       max(CASE WHEN leave_type = 2 THEN leave_hours END) AS leave_2
FROM  table_name
GROUP BY employee_id

на выходе

employee_id     ot     leave_1       leave_2
3              2.3  7.599999904632568   5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...