【发布时间】:2017-10-31 13:22:15
【问题描述】:
我正在使用 AdventureWorks 2014 数据库编写 SQL 查询。我想显示哪个员工的订单价值最高。
我尝试自己编写每个 select 语句(见下文),但我希望能够将两个查询合并为一个:
select
s.SalesOrderID, s.SalesPersonID, COUNT(sd.SalesOrderID) as count
from
Sales.SalesOrderHeader s, Sales.SalesOrderDetail sd
where
s.SalesOrderID = sd.SalesOrderID
group by
sd.SalesOrderID, s.SalesOrderID, s.SalesPersonID
order by
sd.SalesOrderID
select
sd.SalesOrderID, sd.LineTotal, count (sd.SalesOrderID) as count
from
Sales.SalesOrderDetail sd
group by
sd.SalesOrderID, sd.LineTotal
order by
sd.SalesOrderID
【问题讨论】:
-
这 2 个查询是否有效?最高订单价值,我认为是
SUM()函数。从Group By中删除sd.SalesOrderID,因为这是一个聚合。 -
从顶部查询中删除
s.SalesOrderID以获得每个s.SalesPersonID的Count()。从Select和Group By中删除。将Order By更改为s.SalesPersonID -
@WEI_DBA 你能把新的查询写给我吗
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(25 年前),不鼓励使用它
标签: sql sql-server adventureworks