Office中国论坛/Access中国论坛

标题: 请教:如何实现按年龄段进行查询统计! [打印本页]

作者: xc_lichao    时间: 2011-2-22 19:54
标题: 请教:如何实现按年龄段进行查询统计!
本帖最后由 xc_lichao 于 2011-2-23 12:12 编辑

人员表:
工作职名        年龄
科长        45
科员        35
经理        36
总经理        55
科长        28
科员        25
副经理        47
副科长        32
经理        44
总经理        45
科长        46
科员        47
副经理        48
副科长        49
总经理        51

要求实现的查询结果:
工作职名    24~29岁   30~34岁   35~39岁  40~44岁   45~49岁   50~54岁      55~59岁     合计人数
科长                  1                                2                                                                                             3
科员        1                1                1                                                                                                     3
经理                        1        1                                                                                                               2
总经理                                        1        1        1                                                                                  3
副经理                                        2                                                                                                      2
副科长                1                        1                                                                                                    2

请高手指点用什么查询语句能实现上述结果,多谢啦!

作者: xc_lichao    时间: 2011-2-22 21:29
请高手帮帮我吧,多谢了!(最后字段的合计人数可以不要)
作者: xc_lichao    时间: 2011-2-22 21:30
跪求中……

作者: 竹笛    时间: 2011-2-23 00:52
用iif函数,具体可以查看一下函数的使用方法。
作者: xie62    时间: 2011-2-23 08:38
利用日期查询方式来查询
作者: ycxchen    时间: 2011-2-23 09:09
我的数据库有类似的查询,给你参考。[attach]44915[/attach]
作者: roych    时间: 2011-2-23 09:58
写自定义函数,详细可以参考我的《自定义函数查询》:
http://www.office-cn.net/thread-95716-1-1.html
作者: zhao__feng    时间: 2011-2-23 09:59
谢谢分享,已学习!
作者: 石三少    时间: 2011-2-23 10:32
神奇 我居然看见竹笛这个老古董级的元老回帖了。。。。。。
作者: sygudeng    时间: 2011-2-23 10:53
本帖最后由 sygudeng 于 2011-2-23 10:54 编辑

先做一个查询~
工作职名        年龄    年龄段(这个可以用嵌套的iif语句实现)
科长        45            45~49
科员        35            35~40
然后对这个过渡的查询用一个普通的交叉表查询就可以了

作者: xc_lichao    时间: 2011-2-23 12:08
非常感谢以上朋友的热心帮助,本人处于初学阶段,请大家多多指教!谢谢!
作者: sgrshh29    时间: 2011-2-23 13:36
回复 xc_lichao 的帖子

如果不要合计数,查询1就可以了。如果要合计数,见查询3,它是由查询1和查询2做出来的。[attach]44917[/attach]
作者: essenco    时间: 2011-2-23 21:13
神奇 我居然看见竹笛这个老古董级的元老回帖了。。。。。。
作者: xc_lichao    时间: 2011-2-23 22:03
本帖最后由 xc_lichao 于 2011-2-23 22:06 编辑

回复 sgrshh29 的帖子

非常感谢您的热心指点,您的方法可行,不过我用iif函数一次查询就能实现了,在此拿出来与大家一起分享。
SELECT 工作职名, sum(iif(年龄 Between 24 And 29,1,0)) AS 24~29岁, sum(iif(年龄 Between 30 And 34,1,0)) AS 30~34岁, sum(iif(年龄 Between 35 And 39,1,0)) AS 35~39岁, sum(iif(年龄 Between 40 And 44,1,0)) AS 40~44岁, sum(iif(年龄 Between 45 And 49,1,0)) AS 45~49岁, sum(iif(年龄 Between 50 And 54,1,0)) AS 50~54岁, sum(iif(年龄 Between 55 And 59,1,0)) AS 55~59岁, sum(iif(年龄=60,1,0)) AS 60岁, count(*) AS 合计
FROM 人员表
GROUP BY 工作职名;
作者: xc_lichao    时间: 2011-2-23 22:10
回复 竹笛 的帖子

非常感谢您的热心指点,我用iif函数一次查询就能实现了,在此拿出来与大家一起分享。
SELECT 工作职名, sum(iif(年龄 Between 24 And 29,1,0)) AS 24~29岁, sum(iif(年龄 Between 30 And 34,1,0)) AS 30~34岁, sum(iif(年龄 Between 35 And 39,1,0)) AS 35~39岁, sum(iif(年龄 Between 40 And 44,1,0)) AS 40~44岁, sum(iif(年龄 Between 45 And 49,1,0)) AS 45~49岁, sum(iif(年龄 Between 50 And 54,1,0)) AS 50~54岁, sum(iif(年龄 Between 55 And 59,1,0)) AS 55~59岁, sum(iif(年龄=60,1,0)) AS 60岁, count(*) AS 合计
FROM 人员表
GROUP BY 工作职名;




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3