2017-01-20 4 views
2

Я новичок в 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

Edit: Причина, я использую присоединиться, потому что мне нужно будет комбинированную стоимость всех заказов в год, а также.

Спасибо.

+0

Просто добавьте 'count (*)'? –

+0

вам не нужно «присоединяться» к 'OrderDetails', просто выполните' SELECT COUNT (*) FROM Orders WHERE DATEPART (год, orderdate) = 2017' – ughai

+0

Я получаю слишком много заказов со счетом (*) – master2080

ответ

2

Попробуйте это: Использование count Различия во избежании дублирования Идентификаторы заказа

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

Внутри подсчета, я бы никогда не понял. – master2080

0

Просто сделайте 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) 
+0

@ master2080 Посмотрите на ответ сейчас, вам не нужно присоединяться к 'Order Details'Table. просто запустите запрос только против таблицы «Заказы». –

+0

Отредактировано основное сообщение, объясняющее, зачем мне это нужно. – master2080

Смежные вопросы