查找每年的订单数量

时间:2017-01-20 09:08:14

标签: sql-server

我是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),这是关闭的。

表格:

Tables

编辑:我使用加入的原因是因为我还需要每年所有订单的合并价格。

感谢。

2 个答案:

答案 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)