我有3個表:最大計數加入
用戶:
Id Login
1 John
2 Bill
3 Jim
電腦:
Id Name
1 Computer1
2 Computer2
3 Computer3
4 Computer4
5 Computer5
會議:
UserId ComputerId Minutes
1 2 47
2 1 32
1 4 15
2 5 5
1 2 7
1 1 40
2 5 31
我想顯示此結果表:
Login Total_sess Total_min Most_freq_computer Sess_on_most_freq Min_on_most_freq
John 4 109 Computer2 2 54
Bill 3 68 Computer5 2 36
Jim - - - - -
自己,我只能滿足前3列有:
SELECT Login, COUNT(sessions.UserId), SUM(Minutes) FROM users
LEFT JOIN sessions
ON users.Id = sessions.UserId GROUP BY users.Id
與某種其他列的有:
SELECT main.*
FROM (SELECT UserId, ComputerId, COUNT(*) AS cnt ,SUM(Minutes)
FROM sessions
GROUP BY UserId, ComputerId) AS main
INNER JOIN (
SELECT ComputerId, MAX(cnt) AS maxCnt FROM (
SELECT ComputerId, UserId, COUNT(*) AS cnt FROM sessions GROUP BY ComputerId, UserId
)
AS Counts GROUP BY ComputerId)
AS maxes
ON main.ComputerId = maxes.ComputerId
AND main.cnt = maxes.maxCnt
但我需要在一個查詢中得到整個結果表。我覺得我在做一些完全錯誤的事情。需要幫忙。
它看起來像一個查詢 - 你的意思是你不希望使用嵌套查詢此外,SQL您使用的是哪一個? ?PostreSQL?MySQL?MS SQL? – 2010-04-08 17:19:20