2017-10-10 7 views
0

私は現在、週によって私にアイテムの使用状況を取得するクエリを持っている:SQL - 複数のグループのSTDEVP

SELECT Item, SUM(Quantity * PackQty) AS Usage 
FROM [Database].[dbo].Transactions 
WHERE Transactions.Type in ('I') AND Date > DATEADD(year, -1,GETDATE()) 
GROUP BY Item, Datepart(week, MyDate) 
ORDER BY Item 

それは出力だがそうのようなものです:

**Item** **Usage** 
9999   10 
9999   2 
9999   1 
9999   1 
9999   1 
9999   2 
00125   5 
00135   9 
00135   10 
00135   10 
00159   2 
00159   2 
00159   6 
00159   2 
00159   4 
00159   4 
00159   4 
00159   4 
.....  ... 

私が取得したいのです人口が用途である各項目のSTDEVP。例えば、私は を望んでいます:

**Item**  **STDEVP** 
9999    3.236 
00125   0 
00135   0.471 
00159   1.323 
.....   ..... 

は、これを実現する方法はありますか?おかげ

答えて

0

私はこれは何をしたいと思う:

SELECT Item, SUM(Quantity * PackQty), STDEVP(Quantity * PackQty) AS Usage 
FROM [Database].[dbo].Transactions 
WHERE Transactions.Type in ('I') AND Date > DATEADD(year, -1,GETDATE()) 
GROUP BY Item 
ORDER BY Item; 

EDIT:

あなたが元のクエリのためにそれが必要な場合は、サブクエリを使用します。

SELECT Item, STDEVP(qp) AS Usage 
FROM (SELECT Item, Datepart(week, MyDate) as myweek, SUM(Quantity * PackQty) as qp 
     FROM [Database].[dbo].Transactions 
     WHERE Transactions.Type in ('I') AND Date > DATEADD(year, -1, GETDATE()) 
     GROUP BY Item, Datepart(week, MyDate) 
    ) iw 
GROUP BY Item 
ORDER BY Item; 
+0

元のクエリを入れているが毎週の使用法への使用。 STDEVPを入手する必要があります。ここでは、人口は毎週の用途です。あなたが提供したのは、トランザクションごとの元のデータを使用することです。この結果、標準開発者になります。これまでよりもはるかに低くなる。これがDatepart(week、MyDate)が追加された理由です。希望は意味をなさない。 – MAZ

関連する問題