Сумма сумм двух запросов
У меня есть два основных запроса, которые мне нужно суммировать:
Select hours, sum(hours) FROM table WHERE name='xxx' and Description='Worked'
Select hours2, sum(hours2) FROM table WHERE name='xxx' and Description2='Worked'
Я пробовал UNION, и он будет получать итоговые значения каждого запроса, но он не будет их комбинировать.
Настройка таблицы:
- ID
- name
- часов
- описание
- hours2
- description2
Мне нужно соотнести часы с описанием и hours2 с описанием2, поэтому у меня есть два разных запроса. Мне нужно суммировать общие часы и часы2.
Ответы
Ответ 1
Прежде всего, вы пропустили group by
, поэтому, хотя mysql не жалуется на него, значения hours
и hours2
не имеют смысла.
Во-вторых, вы можете получить результат UNION
в производном подзапросе, так что вы получите нужный итог:
SELECT SUM(hr) FROM
(
Select sum(hours) as hr FROM table WHERE name='xxx' and Description='Worked'
UNION ALL
Select sum(hours2) as hr FROM table WHERE name='xxx' and Description2='Worked'
)a
Ответ 2
Вам нужно будет поместить ваш союз в подзапрос:
SELECT Hours,
SUM(Hours) AS Hours,
SUM(Hours2) AS Hours2
FROM ( SELECT Hours,
SUM(Hours) AS Hours,
0 AS Hours2
FROM Table
WHERE Name = 'xxx'
AND Description = 'Worked'
GROUP BY Hours
UNION ALL
SELECT Hours2,
0 AS Hours,
SUM(Hours2) AS Hours
FROM Table
WHERE Name = 'xxx'
AND Description2 = 'Worked'
GROUP BY Hours2
) t
GROUP BY Hours;