java 获取 @max,在select函数中获取max的最大值

这将是我的方法:首先,使用dense_rank选择maxprice的所有ZID . 接下来,使用第二个dense_rank来获取所有CID并从所选ZID获得最高成本 . 最后,使用找到的CID来获取Car-data .

这给出了具有最高价格的所有批次中具有最高(相等)成本的所有汽车的CID和ID .

如果你对fat_rank不熟悉,你可以阅读它here

聚集在一个查询中:

SELECT CID

, ID

FROM Cars AS C

INNER JOIN (

SELECT CID

, Cost

, DENSE_RANK() over (ORDER BY Cost DESC) AS orderedCosts

FROM carParking AS CP

INNER JOIN (SELECT ZID

, DENSE_RANK() over (ORDER BY maxprice DESC) AS orderedMaxprice

FROM ParkingArea

) AS PA

ON PA.ZID= CP.ParkingAreaID

AND orderedMaxprice = 1

) as cars_most_costs

ON cars_most_costs.CID = C.CID

AND cars_most_costs.orderedCosts = 1

dense_rank的工作原理如下:

ZID | maxprice| dense_rank

1 | 1000 | 1

3 | 1000 | 1

2 | 500 | 2

4 | 400 | 3

使用您的纸张示例:第一步获得ZID 1和3,它们都具有最高的maxprice . 下一步获得CID 1010和1011,这是停车区ID为1和/或3的最高成本的汽车 . 最后一步返回CID / ID组合的1010/2000和1011/2001 . 您提供的结果实际上是错误的,因为CID 1014的成本为10,而其他两个的成本为20 .

如果你的意思是每个停车区域的最大费用ID,那么问题不是很明确,但你只需要改变一行:

, DENSE_RANK() over (PARTITION BY ZID ORDER BY Cost DESC) AS orderedCosts

这也将返回汽车1014/2004

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值