|
还是到师傅帖子中回一贴,
我这里给大家解析一下
select *, Hz1.分类销量/Hz2.分类销量 as 分类百分比 from
(select 品种,分公司, sum(数量) as 分类销量 from [数据$] group by 品种,分公司) as Hz1,
(select 分公司, sum(数量) as 分类销量 from [数据$] group by 分公司) as Hz2
where hz1.分公司=Hz2.分公司
规范一下语句:定义表明不用as
select *, Hz1.分类销量/Hz2.分类销量 as 分类百分比 from
(select 品种,分公司, sum(数量) as 分类销量 from [数据$] group by 品种,分公司) Hz1,
(select 分公司, sum(数量) as 分类销量 from [数据$] group by 分公司) Hz2
where hz1.分公司=Hz2.分公司
select 品种,分公司, sum(数量) as 分类销量 from [数据$] group by 品种,分公司
实现对品种、分公司两字段分组的统计求和
select 分公司, sum(数量) as 分类销量 from [数据$] group by 分公司
实现对分公司字段分组的统计求和
对分公司分组统计求和数是对品种、分公司两字段分组统计求和项目再对不同品种的总就和,也就是后者包含前者。
整句语句的意思就是,将两个查询结果作为新的查询表分别命名为Hz1、Hz2,用 ”where hz1.分公司=Hz2.分公司“来组合数据,没有条件的制约的话,组合数据记录将会是所有查询表计录数的乘积,
m 为第一个查询表的记录数,n 为第二个查询表的记录数,也就是第一查询表的每一条记录就要组合第二个查询表的n个,所以记录数会是m*n. 加上条件后,就只保留满足条件的记录。
以此为例,m=10,n=3,你们可以用SQL语句直接提取结果,不用生成数据透视表,你们可以清楚地看到结果了,但因为数据源后面曾经输入过数据,有可能会有空记录。没条件组合30条记录,有条件就只有10条记录了,同时条件的添加,也会将空记录忽略掉。
将统计的结果再进行除数运算,各品种的分组统计数(分组含品种字段)除以各品种已求和了的分组统计数(分组不含品种字段)求得所占比率,最后在字段单元格设置为百分数就可以了。 |
|