Суммируйте результаты SQL-запроса в одном и том же Query - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь суммировать результаты двух столбцов в третьем столбце

SELECT A.Date, A.EmpID,
SUM(CASE WHEN State = 'active' THEN A.MinutesatState ELSE 0 END) AS active, 
SUM(CASE WHEN State = 'idle' THEN A.MinutesatState ELSE 0 END) AS idle,

FROM time A join ttld.login B on A.EmpID=B.username 
WHERE DATE = '01-15-2019' GROUP BY A.EmpID

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

SELECT A.Date, A.EmpID,
SUM(CASE WHEN State = 'active' THEN A.MinutesatState ELSE 0 END) AS active, 
SUM(CASE WHEN State = 'idle' THEN A.MinutesatState ELSE 0 END) AS idle,

SUM(CASE WHEN State = ('idle','active') THEN A.MinutesatState ELSE 0 END) AS Total_of_active_and_Idle

FROM time A join ttld.login B on A.EmpID=B.username 
WHERE DATE = '01-15-2019' GROUP BY A.EmpID

Ответы [ 2 ]

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

Вам нужно IN предложение или = any (), однако MySQL имеет сокращение вместо case . . end:

SELECT A.Date, A.EmpID,
       SUM( State = 'active' ) AS active, 
       SUM( State = 'idle' ) AS idle,
       SUM( State = any('idle','active') ) AS Total_of_active_and_Idle
FROM time A JOIN
     ttld.login B 
     ON A.EmpID = B.username 
WHERE DATE = '01-15-2019' 
GROUP BY A.EmpID;
0 голосов
/ 15 января 2019

Вы можете попробовать ниже - вам нужно добавить в («холостой», «активный»)

SELECT A.Date, A.EmpID,
SUM(CASE WHEN State = 'active' THEN A.MinutesatState ELSE 0 END) AS active, 
SUM(CASE WHEN State = 'idle' THEN A.MinutesatState ELSE 0 END) AS idle,

SUM(CASE WHEN State in ('idle','active') THEN A.MinutesatState ELSE 0 END) AS Total_of_active_and_Idle

FROM time A join ttld.login B on A.EmpID=B.username 
WHERE DATE = '01-15-2019' GROUP BY A.EmpID,A.Date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...