我正试图从桌面上获得最低价格。
当我只使用价格列时,一切似乎都很好。但是当我试图指出其他相关列时,奇怪的事情发生了...所有数据(RealEstateType,Architecture,Area,Price)
从所有列中显示...它就像min函数不起作用......为什么会发生这种情况?
SELECT RealEstateType,Architecture,Area,MIN(Price) AS MinPrice
FROM Rents AS R
INNER JOIN EstatesBasicInfo AS EB
ON EB.RealEstateID=R.RealEstateID
GROUP BY RealEstateType,Architecture,Area
答案 0 :(得分:2)
如果您希望行具有最低租金,则聚合不是正确的解决方案。
窗口函数是最简单的:
SELECT reb.*
FROM (SELECT RealEstateType, Architecture, Area, Price,
ROW_NUMBER() OVER (PARTITION BY RealEstateType, Architecture, Area ORDER BY PRICE ASC) as seqnum
FROM Rents R INNER JOIN
EstatesBasicInfo EB
ON EB.RealEstateID = R.RealEstateID
) reb
WHERE seqnum = 1;
如果您需要关联,请使用rank()
或dense_rank()
代替row_number()
。
编辑:
如果您希望整个表格中的最小值(文本中 ,但查询建议其他内容),那么您不需要任何其他内容:
SELECT TOP 1 RealEstateType, Architecture, Area, Price
FROM Rents R INNER JOIN
EstatesBasicInfo EB
ON EB.RealEstateID = R.RealEstateID
ORDER BY price ASC