首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

报表统计中人数的分组合计有关问题

2012-11-09 
报表统计中人数的分组合计问题有如下的明细表:食堂名称窗口名称消费金额消费人一食堂米饭窗口1张三一食堂

报表统计中人数的分组合计问题
有如下的明细表:
食堂名称 窗口名称 消费金额 消费人
一食堂 米饭窗口 1 张三
一食堂 米饭窗口 2 张三
一食堂 米饭窗口 3 李四
一食堂 小炒窗口 4 张三
一食堂 小炒窗口 5 张三
五食堂 炒菜窗口 6 王五
五食堂 炒菜窗口 7 赵六
五食堂 炒菜窗口 8 赵六
五食堂 炒菜窗口 9 陈七
五食堂 面点窗口 10 王五
五食堂 面点窗口 11 赵六
五食堂 面点窗口 12 李四
五食堂 面点窗口 13 王五

要形成如下的报表:
食堂名称 窗口名称 消费总额 消费人次 消费人数
一食堂 米饭窗口 6 3 2
  小炒窗口 9 2 1
小计 15 5 2

五食堂 炒菜窗口 30 4 3
  面点窗口 46 4 3
小计 76 8 4
合计 91 13 5

请注意,消费人次是可以简单按分组来加和的,但是消费人数在小计和合计行中是不能简单相加的,只能单独从明细统计,但是这种统计会非常麻烦,请问大家对这种报表是怎么处理的,有没有什么好方法?


[解决办法]
什么数据库?
select 食堂名称,窗口名称,sum(消费金额),count(*),count(distinct 消费人) as 消费人数
from tt group by 食堂名称,窗口名称

union

select 食堂名称,'小计',sum(消费金额),count(*),count(distinct 消费人) as 消费人数
from tt group by 食堂名称
[解决办法]

探讨

这样的确能把数据选出来,但是记录的排列顺序怎么控制呢?就是说小计行怎么分别排列在一食堂和五食堂的下面,合计行怎么保证排在最后一行

[解决办法]
如果使用MYSQL
SELECT IFNULL(食堂名称,'合计') AS 食堂名称,
IF((IF(食堂名称 IS NOT NULL,1,0)+IF(窗口名称 IS NULL,1,0))=2,'小计',窗口名称) AS 窗口名称,SUM(消费金额),COUNT(*),COUNT(DISTINCT 消费人) AS 消费人数
FROM tg GROUP BY 食堂名称,窗口名称 WITH ROLLUP

SQLSERVER 类似
[解决办法]
SQL code
mysql> select * from zhaojin1975;+----------+----------+----------+--------+| 食堂名称 | 窗口名称 | 消费金额 | 消费人 |+----------+----------+----------+--------+| 一食堂   | 米饭窗口 |        1 | 张三   || 一食堂   | 米饭窗口 |        2 | 张三   || 一食堂   | 米饭窗口 |        3 | 李四   || 一食堂   | 小炒窗口 |        4 | 张三   || 一食堂   | 小炒窗口 |        5 | 张三   || 五食堂   | 炒菜窗口 |        6 | 王五   || 五食堂   | 炒菜窗口 |        7 | 赵六   || 五食堂   | 炒菜窗口 |        8 | 赵六   || 五食堂   | 炒菜窗口 |        9 | 陈七   || 五食堂   | 面点窗口 |       10 | 王五   || 五食堂   | 面点窗口 |       11 | 赵六   || 五食堂   | 面点窗口 |       12 | 李四   || 五食堂   | 面点窗口 |       13 | 王五   |+----------+----------+----------+--------+13 rows in set (0.00 sec)mysql> select `食堂名称`,`窗口名称`,sum(`消费金额`) as `消费总额`,count(*) as `消费人次`,count(distinct `消费人`) as `消费人数`    -> from zhaojin1975    -> group by `食堂名称`,`窗口名称`    -> WITH ROLLUP;+----------+----------+----------+----------+----------+| 食堂名称 | 窗口名称 | 消费总额 | 消费人次 | 消费人数 |+----------+----------+----------+----------+----------+| 五食堂   | 面点窗口 |       46 |        4 |        3 || 五食堂   | 炒菜窗口 |       30 |        4 |        3 || 五食堂   | NULL     |       76 |        8 |        4 || 一食堂   | 米饭窗口 |        6 |        3 |        2 || 一食堂   | 小炒窗口 |        9 |        2 |        1 || 一食堂   | NULL     |       15 |        5 |        2 || NULL     | NULL     |       91 |       13 |        5 |+----------+----------+----------+----------+----------+7 rows in set (0.06 sec)mysql> 

热点排行