设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 4580|回复: 14
打印 上一主题 下一主题

[查询] 请教:如何实现按年龄段进行查询统计!

[复制链接]
跳转到指定楼层
1#
发表于 2011-2-22 19:54:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
15#
 楼主| 发表于 2011-2-23 22:10:53 | 只看该作者
回复 竹笛 的帖子

非常感谢您的热心指点,我用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 工作职名;
14#
 楼主| 发表于 2011-2-23 22:03:22 | 只看该作者
本帖最后由 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 工作职名;
13#
发表于 2011-2-23 21:13:09 | 只看该作者
神奇 我居然看见竹笛这个老古董级的元老回帖了。。。。。。
12#
发表于 2011-2-23 13:36:10 | 只看该作者
回复 xc_lichao 的帖子

如果不要合计数,查询1就可以了。如果要合计数,见查询3,它是由查询1和查询2做出来的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
11#
 楼主| 发表于 2011-2-23 12:08:54 | 只看该作者
非常感谢以上朋友的热心帮助,本人处于初学阶段,请大家多多指教!谢谢!
10#
发表于 2011-2-23 10:53:46 | 只看该作者
本帖最后由 sygudeng 于 2011-2-23 10:54 编辑

先做一个查询~
工作职名        年龄    年龄段(这个可以用嵌套的iif语句实现)
科长        45            45~49
科员        35            35~40
然后对这个过渡的查询用一个普通的交叉表查询就可以了
9#
发表于 2011-2-23 10:32:51 | 只看该作者
神奇 我居然看见竹笛这个老古董级的元老回帖了。。。。。。

点击这里给我发消息

8#
发表于 2011-2-23 09:59:37 | 只看该作者
谢谢分享,已学习!
7#
发表于 2011-2-23 09:58:30 | 只看该作者
写自定义函数,详细可以参考我的《自定义函数查询》:
http://www.office-cn.net/thread-95716-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-6 19:32 , Processed in 0.126445 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表