首页 > 解决方案 > 查询以查找具有多个按属性分组的值的最大值

问题描述

我正在尝试获取特定项目的最大 bidamt 并显示出价该金额的用户

我能够在两个不同的查询中获得结果,每个查询都返回我想要的子集

select username, auctionbids.itemid, description, bidamt from AuctionBids 
inner join users on auctionbids.userid = users.id
inner join auctionitems on auctionbids.itemid = auctionitems.itemid

select ab.itemid,max(ab.bidamt) as bidmax from auctionbids as ab group by ab.itemid

我想获取用户名、itemid、item descripton、max(bidamt) 加入三个表 - users、auctionitems、auctionbids。

users 包含用户 ID 和用户名

auctionitems 包含 itemid 和 item description

auctionbids 包含 userid、itemid、bidamt

标签: sqlazure-sql-database

解决方案


正如您所说,两个不同的查询每个都返回您想要的子集,您的查询应该是这样的:

SELECT am.username, am.itemid, am.descripton, max(am.bidamt) AS bidmax
FROM (
    SELECT username, auctionbids.itemid, auctionitems.description, bidamt FROM AuctionBids 
    INNER JOIN users ON auctionbids.userid = users.id
    INNER JOIN auctionitems ON auctionbids.itemid = auctionitems.itemid
) AS am 
GROUP BY am.itemid

推荐阅读