SQL GROUP BY с двумя задействованными таблицами - PullRequest
0 голосов
/ 11 ноября 2018

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

Table A:        
UserID  UserName
10      John
11      Mike
12      Matt


Table B:            
SessionID   UserID  SessionTime
124         10      20
123         10      122
42          10      30
324         11      55
534         11      42
344         12      19
653         12      32

Мне нужен этот результат:

Result Table:               
UserName    UserID  TotalTime
John        10      172
Mike        11      97
Matt        12      51

Для одной таблицы B это работает:

SELECT UserID, SUM(SessionTime) AS "Total Time"
FROM TableB
GROUP BY UserID;

но мне нужно прикрепить имя пользователя к окончательному результату

спасибо

Ответы [ 3 ]

0 голосов
/ 11 ноября 2018
SELECT TableA.Username, TableA.User_ID, SUM(SessionTime) INNER JOIN
TableB ON TableA.User_ID = TableB.User_ID GROUP BY TableA.Username,
TableA.User_ID
0 голосов
/ 11 ноября 2018
SELECT a.UserName as "UserName" 
      ,a.UserID as "UserID"
      ,sum(b.SessionTime) as "TotalTime" 
FROM a LEFT JOIN b 
ON a.UserID = b.UserID GROUP BY a.UserID

Здесь. Я использовал TABLE a и Table b

0 голосов
/ 11 ноября 2018

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

select a.UserId, a.UserName, sum(b.SessionTime) as TotalTime
from tableA a
left join tableB b on a.UserId = b.UserId
group by a.UserId, a.UserName;

Примечание: это будет работать для отношений 1-ко-многим, как в вашем случае.

...