我表EMP与其他表连接; EMP有这样的empname和emplength(几个月)
'A' 100
'B' 110
'D' 80
'E' 120
我正在计算每年的平均长度,即每个员工和整体除以12。这里的问题是如何使用汇总计算总体平均量?
输出应该是这样的
'A' 8.33
'B' 9.16
'D' 6.66
'E' 10.00
total 8.54
在这种情况下,您不需要ROLLUP
。您可以使用UNION ALL
实现此目的,如下所示。
select name, [length] / 12.0
from yourtable
union all
select 'Total', avg(length/12.0)
from yourtable
但是如果你想使用ROLLUP
,你可以尝试以下。
select name , avg([length])
from
(
select name, [length] / 12.0 as [length]
from yourtable
cross join
(
values(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)
) t(a)
) t
group by rollup(name)
你可以使用grouping sets
:
select coalesce(empname, total) as empname, avg(emplength)
from . . .
group by grouping sets (empname, ());