首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NORTHWIND DB的SQL最大总和

NORTHWIND DB的SQL最大总和
EN

Stack Overflow用户
提问于 2018-02-06 23:00:21
回答 2查看 265关注 0票数 0

问:在northwind数据库中,获得员工最高认可的产品的员工对该员工的认可最高。

我的意思是我需要得到这样的结果:

Adam Iphone 131231(仅adam售出的iphone的总背书)

Mariaipad1233(只有mariaipad1233对IPad的总体认可,她作为产品的认可度最高)

我可以使用下面的代码来解决所有的问题。我不能在SUM中使用MAX

代码语言:javascript
复制
SELECT  E.FirstName,P.ProductName, SUM(OD.Quantity*OD.UnitPrice) AS [Toplam Satış]
FROM [Order Details] OD 
INNER JOIN Products P ON P.ProductID=OD.ProductID
INNER JOIN Orders O ON O.OrderID=OD.OrderID
INNER JOIN Employees E ON O.EmployeeID=O.EmployeeID
GROUP BY E.FirstName,P.ProductName
ORDER BY E.FirstName,P.ProductName

给那些没有NORTHWIND的人

EN

回答 2

Stack Overflow用户

发布于 2018-02-06 23:23:02

首先SUM(OD.Quantity*OD.UnitPrice)是一个子查询,然后你可以使用子查询获取MAX

您将使用SUM获得MAX

代码语言:javascript
复制
SELECT x.FirstName,X.ProductName,MAX(X.Toplam Satış)
FROM
(
    SELECT  E.FirstName,P.ProductName, SUM(OD.Quantity*OD.UnitPrice) AS [Toplam Satış]
    FROM [Order Details] OD 
    INNER JOIN Products P ON P.ProductID=OD.ProductID
    INNER JOIN Orders O ON O.OrderID=OD.OrderID
    INNER JOIN Employees E ON O.EmployeeID=O.EmployeeID
    GROUP BY E.FirstName,P.ProductName
) AS X
GROUP BY X.FirstName,X.ProductName
票数 1
EN

Stack Overflow用户

发布于 2018-02-06 23:22:54

我从你的问题中理解到的是,如果你有一个如下所示的表格:

代码语言:javascript
复制
FirstName  ProductName  TotalSale
A             Y            10
A             Z            20
B             Z            30

然后,您将看到如下输出:

代码语言:javascript
复制
FirstName  ProductName  TotalSale
A             Y            10
B             Z            30

根据这一点,你能试一下这样的东西吗?我认为使用cte会帮助你解决这个问题。

代码语言:javascript
复制
;with cte (FirstName,ProductName,TotalSale) as
(
   SELECT  E.FirstName,P.ProductName, SUM(OD.Quantity*OD.UnitPrice) AS [TotalSale]
   FROM [Order Details] OD 
   INNER JOIN Products P ON P.ProductID=OD.ProductID
   INNER JOIN Orders O ON O.OrderID=OD.OrderID
   INNER JOIN Employees E ON O.EmployeeID=O.EmployeeID
   GROUP BY E.FirstName,P.ProductName
   ORDER BY E.FirstName,P.ProductName
)
select cte.FirstName,cte.ProductName,MAX(cte.TotalSale)
from cte
inner join (select c.ProductName,max(c.TotalSale) as Max_sale
            from cte c
            group by c.ProductName) t on t.ProductName = cte.ProductName
                                    and t.Max_Sale = cte.TotalSale
group by cte.FirstName,cte.ProductName
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48645947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档