gpt4 book ai didi

指定限制的 SQL 最大值

转载 作者:搜寻专家 更新时间:2023-10-30 20:14:05 27 4
gpt4 key购买 nike

我试图在满足某些条件时返回一个年份列表,但我在使用 MAX 函数时遇到了问题,并让它与我的其余逻辑一起工作。

对于下面两个表:

          coach
coach | team | wins | year
------+------+------+------
nk01 | a | 4 | 2000
vx92 | b | 1 | 2000
nk01 | b | 5 | 2003
vx92 | a | 2 | 2003

team
team | worldcupwin | year
-----+-------------+------
a | Y | 2000
b | N | 2000
a | Y | 2003
b | N | 2003

我想得到以下输出:

years
-----
2000

印出年份的地方是当年获胜次数最多的教练所在的球队也赢得了世界杯。

我决定使用 MAX 函数,但很快就遇到了不知道如何使用它的问题,因为它只能查找特定年份的最大值。这是我到目前为止所得到的:

SELECT y.year
FROM (SELECT c.year, MAX(c.wins), c.team
FROM coach AS c
WHERE c.year >= 1999
GROUP BY c.year, c.team) AS y, teams AS t
WHERE y.year = t.year AND t.worldcupwin = 'Y' AND y.team = t.team;

此查询为我输出大于 1999 年的所有年份,而不仅仅是获胜次数最多的教练也赢得世界杯的那些年份。(使用 postgresql)

感谢任何帮助!

最佳答案

可以使用相关子查询

DEMO

   SELECT c.year, c.team
FROM coachs AS c inner join teams t on c.team = t.team and c.year=t.year
WHERE c.year >= 1999 and exists (select 1 from coachs c1 where c.team=c1.team
having max(c1.wins)=c.wins)

和 t.worldcupwin = 'Y'

输出:

year    team
2000 a

关于指定限制的 SQL 最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54978811/

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