好的,我要做的是返回select语句的最大值
该陈述写成
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上可用的功能。
老实说,只是想知道如何获得最大值不关心其余任务的帮助
答案 0 :(得分:1)
这里最简单的解决方案可能是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
另一个注意事项是,您似乎正在两个表之间进行交叉连接。如果不是这样,那么请使用具有ON
条件的显式联接。