Sql server 如何返回select语句的最大值
好的,我要做的是返回select语句的最大值 声明的内容如下:Sql server 如何返回select语句的最大值,sql-server,aggregate-functions,Sql Server,Aggregate Functions,好的,我要做的是返回select语句的最大值 声明的内容如下: SELECT SUM([Order Details].UnitPrice*[Order Details].Quantity) as total, Products.SupplierID FROM [Order Details], Products GROUP By Products.SupplierID; 它返回一个值列表,其中包含每个供应商从销售中获得的收入 当我将语句更改为 SELECT MAX
SELECT
SUM([Order Details].UnitPrice*[Order Details].Quantity) as total,
Products.SupplierID
FROM [Order Details], Products GROUP By Products.SupplierID;
它返回一个值列表,其中包含每个供应商从销售中获得的收入
当我将语句更改为
SELECT
MAX([Order Details].UnitPrice*[Order Details].Quantity) as total,
Products.SupplierID
FROM [Order Details], Products GROUP By Products.SupplierID;
它为每个供应商返回相同的值,这不是我想要的,我只希望语句返回收入最高的SupplierID
我会注意到这是一项任务,但不是全部
作业内容如下
在Northwind数据库中列出的所有供应商中,根据数据库中的所有订单,找到总收入最高的供应商
编写一个用户定义的标量函数MaxSupplier,该函数输出一个值:根据上述规则选择的供应商的名称。如果有多个供应商符合资格,则从这些候选供应商中随机选择一个。您可能需要研究SQL Server上可用的函数
老实说,我只是想知道如何获得最大值,不需要其他任务的帮助也许这里最简单的解决方案是使用
TOP
和ORDER BY
:
SELECT TOP 1
Products.SupplierID
SUM([Order Details].UnitPrice*[Order Details].Quantity) AS total
FROM [Order Details], Products
GROUP BY
Products.SupplierID
ORDER BY
total DESC;
如果您使用的是早于2008年的SQL Server版本,则必须重复ORDER BY
子句中的全和表达式。如果您还希望返回与最高总数相关的所有记录,请使用以下命令:
SELECT TOP 1 WITH TIES
另一个注意事项是,您似乎正在两个表之间进行交叉联接。如果不打算这样做,则使用显式联接,并启用条件。请学习如何联接表!要记住的一个技巧是不要在表名之间使用逗号。您的结果将是错误的,因为您将两个表的每一行相乘。