`
lizhiyu211
  • 浏览: 230500 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sqlserver按年龄段统计人数

Go 
阅读更多

已知:现有一张职工信息表,职工编号,职工姓名,职工生日,公司编码

求:统计根据输入的公司编码统计改公司各年龄段的人数 年龄段分别为 30岁以下,31-35,36-45,46-55,56以上;

 

初始化数据如下;

CREATE TABLE lzy_test(
 [id] [int] NOT NULL,
 [name] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,
 [birthday] [datetime] NULL,
 [school_code] [int] NULL,
 CONSTRAINT [PK_lzy_test] PRIMARY KEY CLUSTERED
)


INSERT INTO lzy_test (id,name,birthday,school_code) VALUES (1,'name1',{ts '2010-01-01 00:00:00.'},1)
GO
INSERT INTO lzy_test (id,name,birthday,school_code) VALUES (2,'name2',{ts '1989-01-02 00:00:00.'},1)
GO
INSERT INTO lzy_test (id,name,birthday,school_code) VALUES (3,'name3',{ts '1978-02-07 00:00:00.'},1)
GO
INSERT INTO lzy_test (id,name,birthday,school_code) VALUES (4,'name4',{ts '1971-01-08 00:00:00.'},1)
GO
INSERT INTO lzy_test (id,name,birthday,school_code) VALUES (5,'name5',{ts '1990-09-09 00:00:00.'},1)
GO
INSERT INTO lzy_test (id,name,birthday,school_code) VALUES (9,'name9',{ts '1981-01-08 00:00:00.'},1)
GO
INSERT INTO lzy_test (id,name,birthday,school_code) VALUES (10,'name10',{ts '1992-08-07 00:00:00.'},2)
GO
INSERT INTO lzy_test (id,name,birthday,school_code) VALUES (11,'name11',{ts '1965-08-08 00:00:00.'},2)
GO
INSERT INTO lzy_test (id,name,birthday,school_code) VALUES (12,'name12',{ts '1960-08-08 00:00:00.'},2)
GO
INSERT INTO lzy_test (id,name,birthday,school_code) VALUES (13,'name13',{ts '1967-04-08 00:00:00.'},2)
GO

 

解答问题:
select school_code,(
case((case(sign(convert(varchar(100),getdate()-DATEADD(year,datediff(year,h.personal_birthday,getdate()),h.personal_birthday),112)-19000101))
         when 0 then datediff(year,h.personal_birthday,getdate())+1
         when 1 then datediff(year,h.personal_birthday,getdate())+1
         when -1 then datediff(year,h.personal_birthday,getdate())
         end)-1)/5+1) 
when 1 then '30岁以下'
when 2 then '30岁以下'
when 3 then '30岁以下'
when 4 then '30岁以下'
when 5 then '30岁以下'
when 6 then '30岁以下'  
when 7 then '31-35'
when 8 then'36-45'
when 9 then'36-45'
when 10 then'46-55'
when 11 then'46-55'
else '56以上'
end) as 年龄段,  
count(*) as 人数  
from lzy_test 
group by (
case(((case(sign(convert(varchar(100),getdate()-DATEADD(year,datediff(year,h.personal_birthday,getdate()),h.personal_birthday),112)-19000101))
         when 0 then datediff(year,h.personal_birthday,getdate())+1
         when 1 then datediff(year,h.personal_birthday,getdate())+1
         when -1 then datediff(year,h.personal_birthday,getdate())
         end)-1)/5+1)  
when 1 then '30岁以下'
when 2 then '30岁以下'
when 3 then '30岁以下'
when 4 then '30岁以下'
when 5 then '30岁以下'
when 6 then '30岁以下'  
when 7 then '31-35'
when 8 then'36-45'
when 9 then'36-45'
when 10 then'46-55'
when 11 then'46-55'
else '56以上'  
end   )
,school_code

分享到:
评论

相关推荐

    用VB+SQL server 做的学生信息管理系统

    6. 报表展示:以表格或图表的形式展示学生信息统计,如各班级人数、男女比例等。 7. 文件导出导入:支持将数据导出为CSV或其他格式,方便数据交换;也能导入外部数据,更新数据库。 在VB中,我们可以使用Form控件...

    田径运动会信息管理系统 软件工程 课程设计 SQL Server + Visual Studio 2005 + c#

    4. 成绩管理:录入比赛成绩,可以按项目、运动员或比赛时间查询,支持成绩排序和统计。 5. 排名显示:根据比赛成绩自动生成各项目和总成绩的排名。 6. 报告生成:提供数据分析报告,如个人最佳成绩、队伍总分等。 ...

    常用sql语句

    -- 只检索人数大于1的年龄段 ``` 这些SQL语句是数据库查询的基础,熟练掌握它们能够帮助你更有效地管理和分析数据。在实际工作中,结合WHERE、JOIN、子查询等其他概念,可以构建更复杂的查询来满足各种需求。

    SQL语句练习题

    SQL 语句练习题 本节课练习题目涵盖了 SQL 语句的各种知识点,旨在考察学生对 SQL 语句...4. 统计男女学生人数,并计算平均年龄。 本节课练习题目涵盖了 SQL 语句的各种知识点,旨在考察学生对 SQL 语句的掌握程度。

    sql常用源码

    - 查询每个年龄段的平均薪资和该年龄段的人数:`SELECT fage, AVG(fsalary), COUNT(*) FROM t_employee GROUP BY fage;` 以上就是基于提供的SQL Server源码所总结的关键知识点。这些基本的SQL操作对于日常的数据...

    数据库维护实习(推荐文档).doc

    - **编写T-SQL程序**: 实现对数据的统计分析,如统计每个科目的考生人数、及格人数等。 - **更新数据**: 编写T-SQL脚本更新数据,例如根据成绩调整分数等。 ##### 5. 创建视图 - **创建视图**: 在考生表上创建视图`...

    sql常用命令方法

    根据提供的标题、描述、标签及部分内容,我们可以整理出一系列与SQL相关的知识点,这些知识点主要涵盖了数据记录筛选、更新、删除、插入以及统计等操作。同时,还包括了如何创建表、删除表,以及如何通过不同的连接...

    网络数据库复习题目以及答案

    ### 网络数据库复习知识点解析 ...5. **统计每个系的学生人数**:`SELECT Sdept, COUNT(*) AS StudentCount FROM Student GROUP BY Sdept`,此查询语句使用`GROUP BY`对不同系的学生进行分组,并统计每个系的学生总数。

    数据库实验报告

    3.试用CASE语句输出学生表中各年龄段的学生人数。 4.编写存储过程,以系别作为参数,统计指定系别的人数,并作为存储过程的输出。 实验题目: 数据库的完整性 实验目的: 掌握数据库的完整性约束定义,完整性...

    学生成绩管理系统需求分析报告.doc

    - 班级统计:提供班级层面的成绩统计,包括总成绩、平均成绩、班级排名和特定分数段的学生人数。同时,可查看单个学生各科成绩及排名。 - 年级统计:以年级为单位进行成绩处理,统计年级总成绩、排名,以及分数段...

    ASP源码—学生成绩管理查询系统.zip

    7. **界面设计**:一个良好的用户界面是关键,需要直观、简洁,便于不同年龄段的用户操作。 在实际的ASP源码中,可能包含以下主要文件: - **login.asp**:登录页面,处理用户的登录请求,验证用户名和密码。 - **...

    [详细完整版]数据库实验3.doc

    这篇实验报告是关于数据库原理的单表查询,主要在SQL Server 2000环境下进行。实验目的是让学生熟悉SQL Server查询分析器的使用,并熟练掌握单表查询、数据排序及聚集函数的应用。实验中涉及了多个基本的SQL查询操作...

    学生成绩管理系统VB+SQL.doc

    - **技术栈**:VB(Visual Basic)+ SQL Server - **目的**: - 实现课程管理工作的电脑化,提高工作效率。 - 通过网络系统实现集中管理和分散操作,提升选课管理工作的质量和效率。 #### 二、需求分析 - **用户...

    工资管理系统设计报告[1].doc

    1. **数据录入**:录入员工的个人信息(如工号、性别、年龄、籍贯、婚姻状况、学历等)、部门信息(部门名称、负责人、人数)、工资相关信息(如基本工资、津贴、扣款等)。 2. **数据查询**:提供多种查询条件,如...

    【国开搜题】国家开放大学 一网一平台 24春数据库应用技术10 期末考试押题试卷.docx

    第十二个单选题询问了如何创建统计每个系的学生人数的视图。正确的答案是A,“CREATE VIEW v1 AS SELECT 所在系, COUNT(*) FROM 学生表 GROUP BY 所在系”。这个SQL语句通过`GROUP BY`子句按照不同的系分组,并使用`...

    工资管理系统设计报告

    3. SQL语言:掌握SQL Server 2000的操作,学习创建、修改和管理数据库,以及数据表的建立、操作和查询。 4. 数据库编程:学习使用SQL查询语言进行复杂的数据查询、统计和报表生成。 三、系统功能设计 1. 数据录入:...

    数据库第五章课后题+第八章储存过程(2020.4.1作业)

    为了统计离散数学(Cno为'8')的成绩分布情况,我们首先创建一个名为SC8的临时表,用于存储不同分数段的学生人数,然后定义一个名为Stats的存储过程来填充这个表。下面是完整的存储过程代码: ```sql /* 为SC表...

Global site tag (gtag.js) - Google Analytics