XCo*_*m69 2 sql sql-server database-partitioning
我试图回顾一下我的sql技巧,现在我试图在northwinddb上运行一个简单的查询,向我展示每年的顶级客户,但是一旦我使用TOP功能,只有1条记录显示无论我在哪分区依据,这是我的T-SQL代码
SELECT DISTINCT TOP 1 C.CompanyName
, YEAR(O.OrderDate) AS Year
, SUM(Quantity) OVER(PARTITION BY C.CompanyName, YEAR(O.OrderDate)) AS Total
FROM Customers C JOIN Orders O
ON C.CustomerID = O.CustomerID JOIN [Order Details] OD
ON O.OrderID = OD.OrderID
Run Code Online (Sandbox Code Playgroud)
Ste*_*ass 14
您可以在SQL Server 2008中更紧凑地执行此操作,如下所示:
select top (1) with ties
C.CompanyName,
Year(O.OrderDate) as Yr,
sum(OD.Quantity) as Total
from Orders as O
join Customers as C on C.CustomerID = O.CustomerID
join "Order Details" as OD on OD.OrderID = O.OrderID
group by C.CompanyName, Year(O.OrderDate)
order by
row_number() over (
partition by Year(O.OrderDate)
order by sum(OD.Quantity) desc
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11582 次 |
| 最近记录: |