1
A
回答
0
使用GROUP BY
SELECT SUM(month1 + month2 + month3 + month4) AS MonthTotal,
SUM(month1 + month2 + month3 + month4)/(COUNT(*) * 4) AS MonthAvg,
dept
FROM your_table
GROUP BY dept
1
4
另一種選擇是用CROSS APPLY
Select A.Dept
,MonthTotal = sum(B.value)
,MonthAvg = avg(B.value)
From YourTable A
Cross Apply (values (month1)
,(month2)
,(month3)
,(month4)
) B(value)
Group By A.Dept
0
首先,你需要逆轉置數據後進行彙總
declare @table table (Dept varchar(30), Month1 decimal(16,4), Month2 decimal(16,4), Month3 decimal(16,4), Month4 decimal(16,4))
Insert @table (Dept, Month1, Month2, Month3,Month4) values
('Medicine' , 80.06 ,80.0709 ,80.0709 ,80.8153)
,('Medicine' , 61.64 ,null ,81.8364 ,79.1241)
,('Medicine' , 48.34 ,79.0159 ,null ,null)
,('Medicine' , null ,87.5137 ,83.7288 ,75.454)
,('Non-Medicine' , 85.13 ,89.36 ,89.36 ,89.36)
,('Non-Medicine' , 82.21 ,91.2732 ,91.334 ,null)
,('Non-Medicine' , 106.19 ,NULL ,80.3801 ,82.2787)
,('Non-Medicine' , 94.44 ,75.0055 ,75.4232 ,75.4335)
,('Non-Medicine' , 119.77 ,87.6069 ,88.0649 ,null)
Select
Dept
,Sum(Sales)
,Avg(Sales)
FROM (
SELECT
Dept
,Month
,Sales
FROM
(
SELECT
Dept
,Month1
,Month2
,Month3
,Month4
FROM @table
) p UNPIVOT (Sales For Month in (Month1,Month2,Month3,Month4)) U
WHERE Sales Is not null
) x
Group by
Dept
結果
Dept Sum Agv
------------------------------ --------------------------------------- ---------------------------------------
Medicine 917.6700 76.472500
Non-Medicine 1502.6200 88.389411
相關問題
- 1. 平均由不同行SQL
- 2. SQL平均時間
- 3. 平均下來的平均數據列
- 4. SQL的平均水平
- 5. SQL - 從平均
- 6. 豬平行平均
- 7. 最大平均值,最小平均值和平均值
- 8. 訪問SQL平均三列
- 9. 平均列表
- 10. 平均多列
- 11. 平均時間爲sql
- 12. SQL日期時間平均
- 13. SQL平均值和零點
- 14. SQL總結和平均
- 15. SQL Server:平均總和
- 16. sql HAVING和平均值
- 17. 平均行
- 18. 平均n行
- 19. 平均時間
- 20. SUM和平均
- 21. matlab中如何平均時間序列對象的平均值?
- 22. 基於不同值和其他列的列的平均值
- 23. 平均表列的
- 24. SQL JOIN平均值
- 25. 查找平均SQL
- 26. SQL平均場0
- 27. SQL計數平均
- 28. 平均列和訂購它們在SQL
- 29. 基於一列的平均列數
- 30. 平均一列,每15行
完美!謝謝約翰。 – Paul
@Paul樂於助人 –