| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1369 人关注过本帖
标题:晕倒:统计了各部门人员类别,不会统计全公司人员类别
取消只看楼主 加入收藏
zengjun81357
Rank: 2
等 级:论坛游民
帖 子:73
专家分:20
注 册:2011-3-27
结帖率:87.5%
收藏
已结贴  问题点数:10 回复次数:6 
晕倒:统计了各部门人员类别,不会统计全公司人员类别

表ryhmc结构:
字段标题:姓名   部门名称   人员类别
字段:    name   deptname    psncl

结果表bm_ry结构:
部门  人数   行政管理人员(人数)       财务管理人员     营销管理人员    采购供应人员  ......
a部
b部
c部
................................................................
合计

我用下面命令统计每个部门中各类人员的人数,最后 合计一行怎样统计啊?加入下面语句中,或者再另加一条sele语句。各部门都可以统计,不会统计整体的,头晕。


SELECT deptname ,COUNT(*) as 人数,SUM(IIF(psncl='行政管理人员',1,0)) as 行政管理人员,SUM(IIF(psncl='财务管理人员',1,0)) as 财务管理人员,SUM(IIF(psncl='营销管理人员',1,0)) as 营销管理人员,SUM(IIF(psncl='采购供应人员',1,0)) as 采购供应人员,SUM(IIF(psncl='人力资源管理人员',1,0)) as 人力资源管理人员,SUM(IIF(psncl='信息资源管理人员',1,0)) as 信息资源管理人员,SUM(IIF(psncl='工程技术人员',1,0)) as 工资技术人员,SUM(IIF(psncl='生产管理人员',1,0)) as 生产管理人员,SUM(IIF(psncl='生产操作人员',1,0)) as 生产操作人员,SUM(IIF(psncl='服务人员',1,0)) as 服务人员 from ryhmc group by deptname  INTO TABLE bm_ry


[ 本帖最后由 zengjun81357 于 2013-1-21 12:28 编辑 ]
搜索更多相关主题的帖子: 人员 统计 
2013-01-21 12:26
zengjun81357
Rank: 2
等 级:论坛游民
帖 子:73
专家分:20
注 册:2011-3-27
收藏
得分:0 
以下是引用sdta在2013-1-21 19:55:50的发言:

应该这样统计吧
INSERT INTO bm_ry ((FIELD(1))) VALUES (PADC("小计",FSIZE(FIELD(1)),"-")) &&第一个字段必须为字符型,否则会出错
SELECT bm_ry
FOR I=1 TO FCOUNT()
    MFIELD=FIELD(I)
    IF TYPE(MFIELD)="N"
       *--- 数值型字段求和,并将结果添加到最后一条记录
       SUM &MFIELD TO HJ
       REPLACE RECORD RECCOUNT() (FIELD(I)) WITH HJ
       *--- 清空数值型字段内容为"0"的记录
       BLANK FIELD &MFIELD FOR &MFIELD=0
    ENDIF
ENDFOR楼主可以试试
谢谢楼上的回复,只是用这么一段程序也不太简洁,还有点不好懂。
方法一:按照2楼的说法,对结果表bm_ry 进行汇总操作total to 临时表1,然后再  appe from 临时表1,比较明了。
方法二:原表增加一个公共字段:公司,然后两条sele 命令

SELECT 公司,deptname as 部门名称,COUNT(*) as 人数,SUM(IIF(psncl='行政管理人员',1,0)) as 行政管理人员,SUM(IIF(psncl='财务管理人员',1,0)) as 财务管理人员,SUM(IIF(psncl='营销管理人员',1,0)) as 营销管理人员,SUM(IIF(psncl='采购供应人员',1,0)) as 采购供应人员,SUM(IIF(psncl='人力资源管理人员',1,0)) as 人力资源管理人员,SUM(IIF(psncl='信息资源管理人员',1,0)) as 信息资源管理人员,SUM(IIF(psncl='工程技术人员',1,0)) as 工资技术人员,SUM(IIF(psncl='生产管理人员',1,0)) as 生产管理人员,SUM(IIF(psncl='生产操作人员',1,0)) as 生产操作人员,SUM(IIF(psncl='服务人员',1,0)) as 服务人员 from ryhmc group by 公司,deptname  INTO TABLE bm_ry
Insert  INTO  bm_ry   SELECT 公司,SUM(IIF(psncl='随意',1,0)) as deptname,COUNT(*) as 人数,SUM(IIF(psncl='行政管理人员',1,0)) as 行政管理人员,SUM(IIF(psncl='财务管理人员',1,0)) as 财务管理人员,SUM(IIF(psncl='营销管理人员',1,0)) as 营销管理人员,SUM(IIF(psncl='采购供应人员',1,0)) as 采购供应人员,SUM(IIF(psncl='人力资源管理人员',1,0)) as 人力资源管理人员,SUM(IIF(psncl='信息资源管理人员',1,0)) as 信息资源管理人员,SUM(IIF(psncl='工程技术人员',1,0)) as 工资技术人员,SUM(IIF(psncl='生产管理人员',1,0)) as 生产管理人员,SUM(IIF(psncl='生产操作人员',1,0)) as 生产操作人员,SUM(IIF(psncl='服务人员',1,0)) as 服务人员 from ryhmc  group by 公司
最后需要将  汇总行 部门名称 '0' 修改为 '合计'
2013-01-21 21:00
zengjun81357
Rank: 2
等 级:论坛游民
帖 子:73
专家分:20
注 册:2011-3-27
收藏
得分:0 
以下是引用谈建红在2013-1-22 20:34:15的发言:
谢谢你的回复!
我们不是要结果,需要的是思路和方法。如果用编程的方式 count for 一个数一个数统计也很快。
2013-01-22 21:33
zengjun81357
Rank: 2
等 级:论坛游民
帖 子:73
专家分:20
注 册:2011-3-27
收藏
得分:0 
回复 21楼 taifu945
谢谢大家的回复!
我的本意是在用  group by 字段1分组统计时将各组数据统计出来的同时将总体数也统计出来,看来一条sele语句有困难。
2013-01-23 08:41
zengjun81357
Rank: 2
等 级:论坛游民
帖 子:73
专家分:20
注 册:2011-3-27
收藏
得分:0 
以下是引用sdta在2013-1-21 19:55:50的发言:

应该这样统计吧
INSERT INTO bm_ry ((FIELD(1))) VALUES (PADC("小计",FSIZE(FIELD(1)),"-")) &&第一个字段必须为字符型,否则会出错
SELECT bm_ry
FOR I=1 TO FCOUNT()
    MFIELD=FIELD(I)
    IF TYPE(MFIELD)="N"
       *--- 数值型字段求和,并将结果添加到最后一条记录
       SUM &MFIELD TO HJ
       REPLACE RECORD RECCOUNT() (FIELD(I)) WITH HJ
       *--- 清空数值型字段内容为"0"的记录
       BLANK FIELD &MFIELD FOR &MFIELD=0
    ENDIF
ENDFOR楼主可以试试
顺便请教sdta版主,你的截图是用什么截的,怎么弄,怪好,可以复制里面的语句,如果用jpg图将什么都不能动了?
2013-01-23 08:51
zengjun81357
Rank: 2
等 级:论坛游民
帖 子:73
专家分:20
注 册:2011-3-27
收藏
得分:0 
以下是引用tlliqi在2013-1-23 09:00:05的发言:

用12楼给的思路试试 可能行
谢谢提示。12楼的思路可取,但他代码没有贴全,关键是group by 分组根据没有,不明白他怎么分组,用部门分组是不行的,我用公司分组统计全体,然后象他说的 UNION ALL连接

SELECT deptname as 部门名称,COUNT(*) as 人数,SUM(IIF(psncl='行政管理人员',1,0)) as 行政管理人员,SUM(IIF(psncl='服务人员',1,0)) as 服务人员 from ryhmc group by deptname UNION ALL SELECT '合计',COUNT(*) as 人数,SUM(IIF(psncl='行政管理人员',1,0)) as 行政管理人员,SUM(IIF(psncl='服务人员',1,0)) as 服务人员 from ryhmc group by 公司

做个例子,精简一些项目,运行通过
注意一点,原表中不能有空记录。

2013-01-23 12:43
zengjun81357
Rank: 2
等 级:论坛游民
帖 子:73
专家分:20
注 册:2011-3-27
收藏
得分:0 
以下是引用taifu945在2013-1-23 14:36:07的发言:


合计部分是不用GROUP BY分组的,因为这部分的输出字段除了聚集函数就是一个名为“合计”的常量字段。这个我测试过,输出字段中若除了聚集函数外,其它全部是常量的话就不需要分组,你可以单独把“合计”部分的那条SELECT语句拿出来试试。
用每条记录公有的字段分组,比如每个部门的单位相同,每个班的年级相同,每年年级的学校相同,每年学校的行政管理部门相同,总有相同的。即使没有也可以在表中建一共用字段,填上相同内容。
2013-01-23 16:47
快速回复:晕倒:统计了各部门人员类别,不会统计全公司人员类别
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012567 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved