gpt4 book ai didi

sql - 如何根据最大计数选择一行? (使用标准sql)

转载 作者:行者123 更新时间:2023-12-04 14:00:49 25 4
gpt4 key购买 nike

我有一张 table :

计算机 ID、用户 ID、登录日期

我需要一个返回的选择语句:
计算机 ID、用户 ID、登录计数

对于 全部 计算机,但对于每台计算机,显示 只是最常登录该计算机的一个用户 . (如果有平局,我想我只想随意选择一个用户......所以这似乎表明我需要某个地方的 TOP 1。)

(这是在 ms-access 中,所以不能使用供应商特定的功能)。

解决方案(JBrooks 回答的轻微修复)

select main.*
from (select ComputerID, UserID, count(1) as cnt
from ComputerLoginHistory
group by ComputerID, UserID) as main
inner join (select ComputerID, max(cnt) As maxCnt
from
(select ComputerID, UserID, count(1) as cnt
from ComputerLoginHistory
group by ComputerID, UserID) as Counts
group by ComputerID)
as maxes
on main.ComputerID = maxes.ComputerID
and main.cnt = maxes.maxCnt

为了处理>1 用户可能对给定计算机具有相同 loginCount 的情况,我能想到的所有内容都是围绕此包装另一个选择,选择 Max(UserID).....所以你基本上只是随意选择一个其中。这就是我在这个例子中所做的,在那里我拉回了 最近的 用户,而不是最活跃的用户:
Select ComputerID, Max(xUserID) As UserID, MaxLoginDate
FROM
(
SELECT main.ComputerID, main.UserID as xUserID, main.MaxLoginDate
FROM [select ComputerID, UserID, Max(LoginDate) as MaxLoginDate
from ComputerLoginHistory
group by ComputerID, UserID]. AS main
INNER JOIN [select ComputerID, Max(MaxLoginDate) As MaxLogin
from
(select ComputerID, UserID, Max(LoginDate) as MaxLoginDate
from ComputerLoginHistory
group by ComputerID, UserID) as Counts
group by ComputerID]. AS maxes ON (main.MaxLoginDate = maxes.MaxLogin) AND (main.ComputerID = maxes.ComputerID)
)
GROUP BY ComputerID, MaxLoginDate
ORDER BY ComputerID

最佳答案

如果您想要列出每台计算机 Id 及其顶级用户,它将类似于:

select main.*
from (select ComputerID, UserID, count(1) as cnt
from logTable
group by ComputerID, UserID) as main
inner join (select ComputerID, max(cnt) maxCnt
from (select ComputerID, UserID, count(1) as cnt
from logTable
group by ComputerID, UserID) as Counts)
as maxes
on main.ComputerID = maxes.ComputerID
and main.cnt = maxes.maxCnt

关于sql - 如何根据最大计数选择一行? (使用标准sql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1889658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com