使用SQL Server语句统计某年龄段人数占总人数的比例(多层查询语句嵌套-比例分析)
需求:需统计出某个集合内,某个段所占的比例,涉及SELECT查询语句的嵌套,如有疑问可留言。
如下:
--按性别进行年度挂号年龄段分析
--男
SELECT 年龄段,SUM(人数) 数量,cast(cast((SUM(人数)/((select count(*) from YXHIS2020..VTBMZGHMX2020 WHERE BTH=0 AND CXB='男')*1.0)*100) as decimal(9,2)) as varchar)+'%' 所占比例 FROM (
SELECT
CASE
WHEN 年龄 between 0 and 12 THEN '0-12 岁'
WHEN 年龄 between 13 and 24 THEN '13-24岁'
WHEN 年龄 between 25 and 36 THEN '25-36岁'
WHEN 年龄 between 37 and 48 THEN '37-48岁'
WHEN 年龄 between 49 and 60 THEN '49-60岁'
ELSE '60岁以上' END 年龄段, 人数,性别
FROM (
SELECT 年龄,人数,性别 FROM (
select DATEDIFF(year, DCSNY, DGH) 年龄,count(CNL) 人数,CXB 性别
from YXHIS2020..VTBMZGHMX2020 WHERE BTH=0 AND CXB='男' group by DATEDIFF(year, DCSNY, DGH),CXB )A GROUP BY A.年龄,A.人数,A.性别)A )B GROUP BY 年龄段
--女
SELECT 年龄段,SUM(人数) 数量,cast(cast((SUM(人数)/((select count(*) from YXHIS2020..VTBMZGHMX2020 WHERE BTH=0 AND CXB='女')*1.0)*100) as decimal(9,2)) as varchar)+'%' 所占比例 FROM (
SELECT
CASE
WHEN 年龄 between 0 and 12 THEN '0-12 岁'
WHEN 年龄 between 13 and 24 THEN '13-24岁'
WHEN 年龄 between 25 and 36 THEN '25-36岁'
WHEN 年龄 between 37 and 48 THEN '37-48岁'
WHEN 年龄 between 49 and 60 THEN '49-60岁'
WHEN 年龄>60 THEN '60岁以上'
ELSE '年龄错误' END 年龄段, 人数,性别
FROM (
SELECT 年龄,人数,性别 FROM (
select DATEDIFF(year, DCSNY, DGH) 年龄,count(CNL) 人数,CXB 性别
from YXHIS2020..VTBMZGHMX2020 WHERE BTH=0 AND CXB='女' group by DATEDIFF(year, DCSNY, DGH),CXB )A GROUP BY A.年龄,A.人数,A.性别)A )B GROUP BY 年龄段
使用SQL Server语句统计某年龄段人数占总人数的比例(多层查询语句嵌套-比例分析)的更多相关文章
- SQL Server ->> 性能调优案例之 -- 包含递归查询的视图导致整个查询语句性能下降
有个语句最近性能下降很厉害,原本1秒就可以查询完毕的事情现在居然需要3-4分钟. 首先我的做法是先快速找出导致整个语句下降的元凶.在这个例子里面查询语句有3个JOIN字句,我通过删除某一个JOIN节点 ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表)
Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==== ...
- SQL server 创建 修改表格 及表格基本增删改查 及 高级查询 及 (数学、字符串、日期时间)函数[转]
SQL server 创建 修改表格 及表格基本增删改查 及 高级查询 及 (数学.字符串.日期时间)函数 --创建表格 create table aa ( UserName varchar(50 ...
- SQL SERVER的统计信息
1 什么是统计信息 统计信息 描述了 表格或者索引视图中的某些列的值 的分布情况,属于数据库对象.根据统计信息,查询优化器就能评估查询过程中需要读取的行数及结果集情况,同时也能创建高质量的查询 ...
- Sql Server优化---统计信息维护策略
本位出处:http://www.cnblogs.com/wy123/p/5748933.html 首先解释一个概念,统计信息是什么: 简单说就是对某些字段数据分布的一种描述,让SQL Server大概 ...
- SQL Server 等待统计信息基线收集
背景 我们随时监控每个服务器不同时间段的wait statistics ,可以根据监控信息大概判断什么时候开始出现异常,相当于一个wait statistics基线收集,还可以具体分析占比高的等待类型 ...
- SQL Server 数据库 'xxx' 正处于转换状态。请稍后再尝试该语句。
问题是这样的,最近因义务需要,公司更换了数据库服务器.数据库随之切换到新的服务器上. 服务器是 Windows Server 2012系统,数据库是SQL Server 2012 .上面有 多个数据库 ...
- SQL Server 中统计信息直方图中对于没有覆盖到谓词预估以及预估策略的变化(SQL2012-->SQL2014-->SQL2016)
本位出处:http://www.cnblogs.com/wy123/p/6770258.html 统计信息写过几篇了相关的文章了,感觉还是不过瘾,关于统计信息的问题,最近又踩坑了,该问题虽然不算很常见 ...
- SQL Server 查找统计信息的采样时间与采样比例
有时候我们会遇到,由于统计信息不准确导致优化器生成了一个错误的执行计划(或者这样表达:一个较差的执行计划),从而引起了系统性能问题.那么如果我们怀疑这个错误的执行计划是由于统计信息不准确引起的.那么我 ...
随机推荐
- 【已解决】同时使用ajax和form表单传数据的冲突问题
昨天踩了一个大坑,下面总结一下: 前后端数据交互的两种方式: 1.ajax发起请求(请求中可以带有数据)并获取返回的数据 下面给出一个ajax的常见格式: 1 $.ajax({ 2 url:" ...
- 做好PPT,提高沟通效率
本文于2019年7月12日完成,发布在个人博客网站上. 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来. 只用一套PPT来通杀全部使用场景,这个想法其实很天真. 作为一种 ...
- 首届OpenHarmony竞赛训练营结营颁奖,75所高校学子助力建设开源生态
由OpenAtom OpenHarmony(以下简称"OpenHarmony")项目群工作委员会和OpenHarmony项目群技术指导委员会主办的首届OpenHarmony竞赛 ...
- HE琥珀虚颜破解自由安装程序教程(001)
HE琥珀虚颜破解自由安装程序教程(001) 前言 自从狗尾草跑路后,HE琥珀就没法用了,当前APP还没法破解,但是笔者找到了HE琥珀存在的一些漏洞,可以实现安装自己的APP. 所需工具 所需工具 1. ...
- SQline安装
SQLite 安装 SQLite 的一个重要的特性是零配置的,这意味着不需要复杂的安装或管理.本章将讲解 Windows.Linux 和 Mac OS X 上的安装设置. 在 Windows 上安装 ...
- C++调用Python-6:调用Python类
# mytest.py class Test: def hello(self): print("this is test class hello function no params ret ...
- MogDB备机处于standby need-repair(WAL)状态
MogDB 备机处于 standby need-repair(WAL)状态 本文出处:https://www.modb.pro/db/402820 问题现象 Mogdb 主备环境,备机检查发现 Sta ...
- C++对象封装后的内存布局
在C语言中,数据和数据的处理操作(函数)是分开声明的,在语言层面并没有支持数据和函数的内在关联性,我们称之为过程式编程范式或者程序性编程范式.C++兼容了C语言,当然也支持这种编程范式.但C++更主要 ...
- 刪除k个数字后的最小值
前言 比如说 1593212,去掉一个数字后,保留的是最小值. 原理:因为要保留最小值,那么要删除最高位的数字是最明显的. 那么1和5到底删除哪一个呢?当然是删除最大值了. 代码 public sta ...
- docker 应用篇————dockerfile[十四]
前言 简单介绍一下dockerfile. 正文 dockerfile就是docker image的构建文件. 然后来运行一下. 然后就产生了test:1.0 这个镜像. 然后启动一下你就发现了这个镜像 ...