SQL查询MAX()函数

时间:2019-05-27 16:53:01

标签: sql

select ProductID,ProductName,QuantityPerUnit 
from Products 
where Products.UnitPrice=Max(UnitPrice)

此查询出了什么问题?

我尝试用“具有”代替“ where”标记。

select ProductID,ProductName,QuantityPerUnit 
from Products 
having Products.UnitPrice=Max(UnitPrice)

它必须以最高单价产生结果,

ProductID   ProductName     QuantityPerUnit
38          Côte de Blaye   12 - 75 cl bottles

6 个答案:

答案 0 :(得分:0)

如果您希望产品的最大数量为UnitPrice

select ProductID,ProductName,QuantityPerUnit 
from Products 
where UnitPrice = (select Max(UnitPrice) from Products)

此查询:

select Max(UnitPrice) from Products

返回最大值UnitPrice
如果有多个相同价格的产品,将全部退回。
如果只需要1,则可以使用LIMIT 1TOP 1,具体取决于您使用的rdbms。

答案 1 :(得分:0)

使用子查询查找最高价格

SELECT ProductID, ProductName, QuantityPerUnit 
FROM Products 
WHERE UnitPrice = (SELECT Max(UnitPrice) FROM Products)

答案 2 :(得分:0)

除非在子查询中,否则不能简单地在where子句中使用聚合函数。

尝试:::

select ProductID,ProductName,QuantityPerUnit from Products 
Where  Products.UnitPrice= (select Max(UnitPrice) from Products)

如果您使用的是TSQL,则最好使用

select top 1 With ties  ProductID,ProductName,QuantityPerUnit from Products 
Order by  UnitPrice desc

这将为您提供所有单价最高的产品,并且由于没有子查询,因此效率很高。

答案 3 :(得分:0)

可以使用HAVING子句

SELECT ProductID, ProductName, QuantityPerUnit FROM Products
     GROUP BY ProductID, ProductName, QuantityPerUnit
     HAVING UnitPrice = MAX(UnitPrice)

答案 4 :(得分:0)

查询的问题是您在查询中混合了聚合值和原始值。

如果只需要一行,我建议使用另一种方法:

select ProductID, ProductName, QuantityPerUnit 
from Products 
order by UnitPrice desc
fetch first 1 row only;

尽管fetch first是标准SQL,但并非所有数据库都支持它,因此您可能需要数据库的适当语法。

答案 5 :(得分:0)

我尝试过的是:

从产品中选择最大(单价)

选择Max(UnitPrice)ProductID,ProductName,QuantityPerUnit 来自产品 按ProductID,ProductName,QuantityPerUnit分组,最大(UnitPrice)> 200