我是SQL的初学者,并且一直在尝试根据访问强度和文件夹名称获取所有最大值,并允许相应地显示文件夹组。我尝试使用MAX函数但它只返回1个最大结果。提前感谢您获得有关如何达到指定结果的任何帮助或指导。
请参阅顶部表格附带的jpg链接以及底部表格中的所需结果。
约翰
答案 0 :(得分:1)
您可以使用RANK功能将记录放入订单中,然后只选择前1:
WITH CTE AS
( SELECT Folder_name,
[User],
Access,
Group_Allowing,
[Rank] = RANK() OVER(PARTITION BY Folder_Name, [User] ORDER BY Access DESC)
FROM T
)
SELECT Folder_name,
[User],
Access,
Group_Allowing
FROM CTE
WHERE [Rank] = 1;
PARTITION BY
子句类似于GROUP BY,每个组的排名将再次从0开始。然后简单地说明订单的排序顺序。
答案 1 :(得分:0)
您希望使用MAX()
将查询放入子查询中,并将JOIN
放入其中:
SELECT a.*
FROM YourTable a
JOIN (SELECT Folder_Name, [User], MAX(Access) Max_Access
FROM YourTable
GROUP BY Folder_Name, [User]
)b
ON a.Folder_Name = b.Folder_Name
AND a.[User] = b.[User]
AND a.Access = b.Max_Access
答案 2 :(得分:0)
您可以使用“ORDER BY Access DESC”和“LIMIT [您想要的条目数]”,或者如果您想获得最高的数字,您可以使用“GROUP BY Access”,然后使用max()显示所有你想要的条目