问题:希望能在分组合计数据后再加一列总计
数据源:
分组后数据
等级 数量
A 524
B 3101
C 12546
D 21218
希望呈现效果
等级 数量 总计 总占比
A 524 37389 1.40%
B 3101 37389
C 12546 37389
D 21218 37389
不知道要怎么把‘总计’放到列里,用union就只能放到行的位置,求指导,谢谢~~
提供一个思路,先获得 下面的结果集
等级 总计 总占比
A 37389 1.40%
B 37389 1.40%
C 37389 1.40%
D 37389 1.40%
在left join on a.等级 = b.等级
分组后数据
等级 数量
A 524
B 3101
C 12546
D 21218
以下是MySQL的写法,即:
select a.等级,a.数量,b.总计,b.百分比
from (分组后的数据) a
left join (总计、百分比等结果集) b on a.等级 = b.等级
这典型的要用开窗函数呀
select
s 等级,
count(id) 总计,
count(id)/sum(count(id)) over() 占比
from test_table group by s
select
字段1 as 别名1,
字段n as 别名n
INTO #Temptable
from table with (nolock)
left join ......
where .....
AND
select *
from #Temptable
union all
select 字段1 as 别名1,
sum([数量]) ,
sum(总计),
sum(总占比)
from #Temptabl
GROUP BY [数量],[总计],[总占比]