我是SQL的新手,我想要一些帮助。
我正在使用MSSQL(Northwind数据库)。
如何获得每年的所有订单?
我知道如何从订单日期开始每年,但我不知道如何获得每年的订单总数:
SELECT datepart(year,o.OrderDate)
FROM Orders o
JOIN [Order Details] od ON o.OrderID = od.OrderID
group by datepart(year,o.OrderDate)
有谁可以告诉我在哪里寻找或提供一些帮助?
结果总共有三年(1999,1998,1997)
数据库中总共有830个订单。
做一个计数(*)产生(691,405,1059),这是关闭的。
表格:
编辑:我使用加入的原因是因为我还需要每年所有订单的合并价格。
感谢。
答案 0 :(得分:2)
尝试此操作:使用count Distinct以避免重复的订单ID
SELECT COUNT(DISTINCT o.OrderID),YEAR(o.OrderDate)
FROM Orders o
JOIN [Order Details] od ON o.OrderID = od.OrderID
GROUP BY YEAR(o.OrderDate)
答案 1 :(得分:1)
只需执行Count(*)
,您的小组就可以了。
SELECT datepart(year,o.OrderDate)
, COUNT(*) TotalOrders
FROM Orders o
JOIN [Order Details] od ON o.OrderID = od.OrderID
group by datepart(year,o.OrderDate)
您也可以编写相同的查询:
SELECT year(o.OrderDate) [Year]
, COUNT(*) TotalOrders
FROM Orders o
JOIN [Order Details] od ON o.OrderID = od.OrderID
group by year(o.OrderDate)
只是一个不同的Datetime
函数,但做同样的事情。
修改强>
如果您只想知道每年Orders
,则无需将其加入Order Details
表,只需执行以下操作:
SELECT year(o.OrderDate) [Year]
, COUNT(*) TotalOrders
FROM Orders o
group by year(o.OrderDate)