查询表中的最低值

时间:2018-09-06 18:27:27

标签: sql-server

我想在下表中执行此查询,但是我不能说需要使用hading和group by,有人可以向我展示如何使用SQL Server。

SELECT
    products.name AS item,
    users.name AS buyer,
    auctionValues.value AS value
FROM 
    auctionValues
JOIN 
    products ON (auctionValues.productId = products.id)
JOIN 
    auctionOrders ON (auctionsValues.auctionOrderId = auctionOrders.id)
                  AND (auctionOrders.id = '987')
JOIN 
    users ON auctionValues.userId = users.id
WHERE 
    auctionValues.value >= MIN(auctionValues.value) * 1.05
ORDER BY
    products.id ASC,
    auctionValues.value DESC 

3 个答案:

答案 0 :(得分:0)

这可能有效:

;with minValues as (
    select productId, MIN(auctionValues.value) * 1.05 as minValue
)
SELECT
    products.name AS item,
    users.name AS buyer,
    auctionValues.value AS value
FROM 
    auctionValues
JOIN 
    products ON (auctionValues.productId = products.id)
JOIN 
    auctionOrders ON (auctionsValues.auctionOrderId = auctionOrders.id)
                  AND (auctionOrders.id = '987')
JOIN 
    users ON auctionValues.userId = users.id
WHERE 
    auctionValues.value >= (SELECT minValue from minValues WHERE products.Id = minValues.productId)
ORDER BY
    products.id ASC,
    auctionValues.value DESC 

答案 1 :(得分:0)

答案 2 :(得分:0)

如果不将MIN之类的聚合函数不包含在GROUP BY中,则不能将它们混合在一起。但是,根据您的情况,您只需要使用SELECT子查询来获取条件中使用的MIN值。

更改此部分:

WHERE auctionValues.value >= (SELECT MIN(auctionValues.value) FROM auctionValues) * 1.05