SQL - 多组

问题描述:

我现在有一个查询按周给我弄一个项目的用法STDEVP:SQL - 多组

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 
.....   ..... 

有没有办法做到这一点?由于

我想这是你想要的东西:

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; 

编辑:

如果你需要它的原始查询,使用子查询:

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