gpt4 book ai didi

sql - 从表中查找多个最大值

转载 作者:搜寻专家 更新时间:2023-10-30 21:46:00 25 4
gpt4 key购买 nike

我已阅读类似问题的答案,但找不到解决我的特定问题的方法。

我将用一个简单的例子来证明我的问题。

我有一个名为“奖品”的表,其中包含两列:员工和奖项

员工列列出了员工的 ID,奖励显示了员工获得的单个奖项。如果一名员工赢得了多个奖项,他们的 ID 将与每个唯一的奖项一起列在表格的多行中。

表格如下所示:

Employee      AWARD
1 Best dressed
1 Most attractive
2 Biggest time waster
1 Most talkative
3 Hardest worker
4 Most shady
3 Most positive
3 Heaviest drinker
2 Most facebook friends

使用此表,我将如何选择获得最多奖励的员工的 ID?

输出应该是:

Employee
1
3

以这两名员工都获得 3 个奖项为例

目前,下面的查询输出员工 ID 以及他们获得的奖励数量(按降序排列):

SELECT employee,COUNT(*) AS num_awards
FROM prizes
GROUP BY employee
ORDER BY num_awards DESC;

会输出:

employee  num_awards
1 3
3 3
2 2
4 1

我如何更改我的查询以选择获奖最多的员工?

最佳答案

表达这一点的一种简单方法是使用 rank()dense_rank():

SELECT p.*
FROM (SELECT employee, COUNT(*) AS num_awards,
RANK() OVER (ORDER BY COUNT(*) DESC) as seqnum
FROM prizes
GROUP BY employee
) p
WHERE seqnum = 1;

能够结合聚合函数和分析函数可以使这些查询更加简洁。

关于sql - 从表中查找多个最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34159292/

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