使用相关的子查询和最大

问题描述 投票:0回答:2

inventoryPart

-partnumber

,partDescription,cattoryId,eoq,stickprice, 重新级,Stocklevel,Stockonorder,重量

custorderline

订单,partnumber,UnitPrice,OrderQuantity,折扣,状态

我只需要返回最昂贵的库存部分的partnumber,partDeScription,股票和类别。 到目前为止,这是我提出的最好的...

SELECT IP.PartNumber, IP.PartDescription, IP.CategoryID, IP.StockPrice FROM InventoryPart IP, CustOrderLine COL WHERE IP.PartNumber = COL.PartNumber AND COL.UnitPrice IN (SELECT MAX(COL.UnitPrice) FROM CustOrderLine COL)

此代码的问题是它返回所有类别的最大单位率,而不是按类别分开 我陷入了这个问题,我非常感谢您的帮助。

这样的事情应该使用子查询来使您的

MAX
UITPRICE与每个类别相关联。
SELECT DISTINCT IP.* FROM InventoryPart IP JOIN CustOrderLine COL ON IP.PartNumber = COL.PartNumber JOIN ( SELECT IP.CategoryID, MAX(COL.UnitPrice) MaxPrice FROM InventoryPart IP INNER JOIN CustOrderLine COL ON IP.PartNumber = COL.PartNumber GROUP BY IP.CategoryID ) T ON IP.CategoryId = T.CategoryId AND COL.UnitPrice = T.MaxPrice

the是一个减少的

fiddle

,显示了每类单价最高的库存零件。

sql max correlated-subquery
2个回答
1
投票
SELECT a.PartNumber, a.PartDescription, a.CategoryID, a.StockPrice FROM InventoryPart a INNER JOIN ( SELECT PartNumber, MAX(StockPrice) max_price FROM Inventorypart GROUP BY PartNumber ) b ON a.partNumber = b.PartNumber AND a.StockPrice = b.max_price

为了更好的性能,请在列上添加一个
INDEX

(PartNumber, StockPrice)

update1


1
投票

SELECT  a.PartNumber, a.PartDescription, a.CategoryID, a.StockPrice
FROM    InventoryPart a
        INNER JOIN
        (
            SELECT  PartNumber, CategoryID, MAX(StockPrice) max_price
            FROM    Inventorypart
            GROUP   BY PartNumber, CategoryID
        ) b ON  a.partNumber = b.PartNumber AND
                a.StockPrice = b.max_price AND
                a.CategoryID = b.CategoryID


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.