gpt4 book ai didi

sql - 使用 COUNT() 从子查询进行 MAX() 查询

转载 作者:行者123 更新时间:2023-12-04 22:41:03 33 4
gpt4 key购买 nike

需要显示旅行次数最多的船名,所以我查询了次数:

SELECT B.IdBoat, COUNT(T.IdTrip)
FROM Trip T INNER JOIN Boat B ON T.IdBoat=B.IdBoat
GROUP BY B.IdBoat

现在我需要显示具有 MAX 行程的那个的名称,我如何将该查询用作子查询,而不使用 ORDER BY DESC 和 TOP 1 而使用 MAX?目前得到:

SELECT B.Name
FROM Trip T INNER JOIN Boat B ON T.IdBoat=B.IdBoat
WHERE B.IdBoat = MAX( the sub query above)

也试过

SELECT B.Name, T.IdTrip
FROM Boat B INNER JOIN Trip T ON B.IdBoat=T.IdBoat
WHERE B.IdBoat IN (
SELECT MAX(T.NTrips) FROM
(SELECT B.IdBoat AS [IdBoat], COUNT(T.IdTrip) AS [NTrips]
FROM Trip T INNER JOIN Boat B ON B.IdBoat=T.IdBoat
GROUP BY B.Boat) T
GROUP BY T.IdBoat)

上面返回的是船名的完整计数 3,而不是正确的 2。

我已经尝试在 stackoverflow 和其他网站上搜索和搜索上述问题,但无法根据我的查询调整他们的解决方案,任何帮助都是很好的帮助。

谢谢。

编辑 1. 根据要求,我将提供一些数据以帮助更好地理解问题

table 上船:

IdBoat | Name
1 | 'SS Sparrow'
2 | 'SS AndaNoMar'

餐 table 之旅

IdTrip | IdBoat
1 | 1
2 | 1
3 | 2

子查询 1 (COUNT)

IdBoat | NTrips
2 | 1
1 | 2

最佳答案

你可以这样做:

with
x as (
select
b.idBoat,
b.Name,
count(*) as cnt
from trip t
join boat b on b.idBoat = t.idBoat
group by b.idBoat, b.Name
),
m as (
select max(cnt) as max_cnt from x
)
select
x.*
from x
join m on m.max_cnt = x.cnt

关于sql - 使用 COUNT() 从子查询进行 MAX() 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56509484/

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