gpt4 book ai didi

SQL 选择分组行的最高计数

转载 作者:行者123 更新时间:2023-12-03 03:23:02 26 4
gpt4 key购买 nike

我有一个表格,其中有标签和旁边的一些代码:

id  |  label  |  code
1 | foo | 21
2 | foo | 33
3 | foo | 33
4 | foo | 13
5 | foo | 13
6 | foo | 33
7 | bar | 13
8 | bar | 13
9 | bar | 33
10 | smt | 33
11 | smt | 13

我需要一个查询,为每个“标签”选择“代码”的最高频率。这是我到目前为止所拥有的:

SELECT count(*) frequency, label, code
FROM myTable
GROUP BY label, code

这给了我:

frequency | label | code
1 | foo | 21
3 | foo | 33
2 | foo | 13
2 | bar | 13
1 | bar | 33
1 | smt | 33
1 | smt | 13

我想要的是:

frequency | label | code
3 | foo | 33
2 | bar | 13
1 | smt | 33
1 | smt | 13

正如您所看到的,“foo”和“bar”仅选择了最高频率。由于“smt”没有最大频率(全部相同),因此包含所有行。
我什至不知道从哪里开始。有人可以帮忙吗?谢谢。 (顺便说一下我正在使用mssql)

最佳答案

我的解决方案与@TechDo类似,但有1个子查询

SELECT frequency,label,code FROM
(
SELECT
count(*) AS frequency
,MAX(COUNT(*)) OVER (PARTITION BY label) AS Rnk
,label
,code
FROM myTable
GROUP BY label, code
) x
WHERE frequency=Rnk
ORDER BY frequency DESC

SQLFiddle here

关于SQL 选择分组行的最高计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21776385/

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