2017-01-20 9 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) 

誰がどこを見れまたは提供するために、教えてもらえます手助け?

結果として出てくる3年間の合計(1999,1998,1997)

は830件の注文の合計がデータベースに存在しています。

カウント(*)を行うと、(691,405,1059)が発生します。

テーブル:

Tables

編集:私も毎年、すべての注文の合計価格が必要になりますので、私は参加し使用していた理由があります。

ありがとうございました。

+0

'count(*)'を追加するだけですか? –

+0

あなたは 'OrderDetails'と' join 'する必要はありません.DAYEPART(year、orderdate)= 2017' – ughai

+0

私はcount(*)であまりに多くの注文を受けています – master2080

答えて

2

はこれを試してみてください:使用しますcount重複を避けるための明確な注文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

個数は分かりませんが、私はそれを分かったことはありません。 – 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に参加する必要はありません。 'Orders'テーブルに対してのみクエリを実行するだけです。 –

+0

なぜ私がそれを必要としているのかを説明するメインポストを編集しました。 – master2080

関連する問題