gpt4 book ai didi

mysql - SQL - 没有排序的最高结果的子查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:14 26 4
gpt4 key购买 nike

(对不起标题,想不出怎么解释)

所以我有一个 Olympic 数据库,基本布局是有一个包含 competitornum、givenname 和 familyname 的 competitors 表(其他列对此不是必需的)还有一个包含 competitivenum 和 place(介于 1 和8).

我正在尝试获取 givenname 和 familyname 以及金牌、银牌和铜牌的总数(place = 1、2 或 3)

它还需要只显示奖牌数量最多的结果,并且所有这些都不需要使用 Order By 子句...

我之前问过这个问题,后来发现忘记说了,加粗之前的回答是:

SELECT c.Givenname, c.Familyname, COUNT(r.places) AS TotalPlaces
FROM Competitors c INNER JOIN Results r
ON r.Competitornum = c.Competitornum
WHERE r.place IN (1,2,3)
GROUP BY c.Givenname, c.Familyname

我认为它需要另一个像

这样的子查询
AND TotalPlaces = (SELECT MAX(TotalPlaces))

但我不确定如何在子查询之上使用别名...

感谢所有帮助,谢谢!

编辑:关于我作业的官方问题(我想不出答案,我真的试过了,这就是我来这里的原因):

哪位选手获得的奖牌数量最多(金、银、铜加在一起)?列出他们的名字和姓氏以及他们的奖牌总数(仅)。

警告:您的解决方案不得假定竞争对手名称始终不同不要在此查询的任何部分使用 ORDER BY 子句。

最佳答案

为此你需要另一个子查询,

SELECT c.Givenname, c.Familyname, COUNT(r.places) AS TotalPlaces
FROM Competitors c
INNER JOIN Results r ON r.Competitornum = c.Competitornum
WHERE r.place IN (1,2,3)
GROUP BY c.Givenname, c.Familyname
HAVING COUNT(r.places) =
(
SELECT MAX(TotalPlaces)
FROM
(
SELECT COUNT(g.places) AS TotalPlaces
FROM Competitors f
INNER JOIN Results g ON f.Competitornum = g.Competitornum
WHERE g.place IN (1,2,3)
GROUP BY f.Givenname, f.Familyname
)
)

关于mysql - SQL - 没有排序的最高结果的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12361614/

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