SQL AVG和部门整体平均水平

时间:2019-02-21 15:35:25

标签: sql average

我的数据就是这样

Dept  Sub_Dept  Sal
d1     sd1       100
d1     sd1       150
d1     sd2       100
d1     sd2       200
d1     sd2       350
d2     sd1       100
d2     sd1       250
d2     sd1       250
d2     sd2       200
d2     sd2       350

我的输出应该是每个子部门的计数,每个子部门(AVG)的Sal值的sub_dept和所有部门(部门)的AVG < / p>

我希望我的输出看起来像这样

结果

d1         sd1 2  125
d1         sd2 3  200
Total          5  180
d2         sd1 3  200
d2         sd2 2  225
Total          5  230
grand total    10 205

如何获取内部AVG和外部collection[] co=null; [...] co[counter]=... 值?

2 个答案:

答案 0 :(得分:0)

全部使用联盟

select dept,sub_dept,count(*) cnt ,avg(Sal) as av
from table_name group by dept,sub
 union all
 select 'total','', count(*),avg(Sal) 
 from table_name

答案 1 :(得分:0)

大多数SQL方言支持标准grouping sets(或至少roll up)。典型语法为:

select dept, sub_dept, avg(sal)
from t
group by grouping sets ( (dept, sub_dept), () );