SQL动态化多个分组查询
现有以下三张表,分别为:diqu(地区表),zhiye(职业表),info(信息表)

最基本的分组查询
1 select dqID,jbID,COUNT(1) from info group by dqID,jbID
这样就得到info(信息表)里各地区、各职业的人数。如果想看得更直观,可以用inner join
1 select MAX(dqName) 地区,MAX(zyName) 职业,COUNT(1) 人数 from info
2 inner join diqu on info.dqID=diqu.ID
3 inner join zhiye on info.zyID=zhiye.ID
4 group by dqID,zyID order by dqID
得到结果:

可是这样只能查到info(信息表)里的人数,如果我们需要查询每个地区、职业的人数,可以用cross join
1 select dqName 地区,zyName 职业,(select COUNT(1) from info where dqID=c.dqID and zyID=c.zyID) 人数 from
2 (select dqName,diqu.ID dqID,zyName,zhiye.ID zyID from diqu cross join zhiye) c
3 order by c.dqID
得到结果:

这样就得到我们想要的结果,可还是不够直观,可以再列转行
1 DECLARE @sql VARCHAR(8000)
2 SELECT @sql=isnull(@sql+',','')+zyName FROM zhiye order BY ID
3 SET @sql='select * from (
4 select dqID,dqName 地区,zyName 职业,(select COUNT(1) from info where dqID=c.dqID and zyID=c.zyID) 人数 from
5 (select dqName,diqu.ID dqID,zyName,zhiye.ID zyID from diqu cross join zhiye) c
6 ) b pivot (max(人数) for 职业 in ('+@sql+'))a'
7 exec(@sql)
得到结果:

SQL动态化多个分组查询的更多相关文章
- 关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询
前言 上一篇关系数据库常用SQL语句语法大全主要是关系型数据库大体结构,本文细说一下关系型数据库查询的SQL语法. 语法回顾 SELECT [ALL|DISTINCT] <目标列表达式>[ ...
- Hibernate 分组查询 子查询 原生SQL
分组查询: 使用group by关键字对数据分组,使用having关键字对分组数据设定约束条件,从而完成对数据分组和统计 1.1 聚合函数:常被用来实现数据统计功能 ① count() 统计记录条数 ...
- 08章 分组查询、子查询、原生SQL
一.分组查询 使用group by关键字对数据分组,使用having关键字对分组数据设定约束条件,从而完成对数据分组和统计 1.1 聚合函数:常被用来实现数据统计功能 ① count() 统计记录条数 ...
- SQL分组查询group by
注意:select 后的字段,必须要么包含在group by中,要么包含在having 后的聚合函数里. 1. GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用 group ...
- SQL group by分组查询(转)
本文导读:在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析.创建分组是通过GROUP BY子句实现的.与WHERE子句不同,GROUP BY子句用于归纳 ...
- sql sever分组查询和连接查询
分组查询select 查询信息 from 表名where 条件group by 按照列分组(可多个 ,隔开)order by 排序方式(查询信息如果列名和聚合函数同时出现,要么在聚合函数中出现,要么就 ...
- Oracle总结【SQL细节、多表查询、分组查询、分页】
前言 在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了...印象中就只有基本的SQL语句和相关一些概念....写下本博文的原因就是记载着Or ...
- SQL Server数据库————连接查询和分组查询
SQL Server数据库————连接查询和分组查询 分组查询 select 列from <表名> where …… group by 列 注意:跟order by一样group ...
- SQL分组查询及聚集函数的使用
今天要做一个查询统计功能,一开始有点犯难,上午尝试大半天才写出统计sql语句,才发现自己sql分组查询及聚集函数没学好:其实就是group by子句和几个聚集函数,熟练使用统计功能很简单.在此总结下今 ...
- sql server——分组查询(方法和思想)
思想 先排序在汇总 sql server里分组查询通常用于配合聚合函数,达到分类汇总统计的信息.而其分类汇总的本质实际上就是先将信息排序,排序后相同类别的信息会聚在一起,然后通过需求进行统计计算. 使 ...
随机推荐
- 一张图读懂TuGraph Analytics开源技术架构
TuGraph Analytics(内部项目名GeaFlow)是蚂蚁集团开源的分布式实时图计算引擎,即流式图计算.通过SQL+GQL融合分析语言对表模型和图模型进行统一处理,实现了流.批.图一体化计算 ...
- WPF-封装自定义雷达图控件
源码地址:https://gitee.com/LiuShuiRuoBing/code_blog 雷达图用于表示不同内容的占比关系,在项目中有广泛的应用,但是目前未曾有封装良好的雷达图控件,鉴于最近项目 ...
- git clone时报错:Permission denied
一.问题简述: 执行git clone git@github.com:T-Better/Soft_test.git时报错:\302\226git@github.com: Permission deni ...
- linux上搭建Nacos集群(步骤详细,linux小白也能搞定)
(1)nacos官网:https://github.com/alibaba/nacos/releases/tag/1.2.1下载nacos安装包到window本地(后缀为tar.zip) (2)在li ...
- [Servlet/Tomcat] HttpServletRequest#getHeader(headerNameWithIgnoreCase)(获取header时不区分大小写)
1 故事背景 最近项目上有个业务需求,翻译成技术需求,即:将request.headers中的几个header入参转换成request.body(pageRequest)中的内置参数. 为便于灵活配置 ...
- skynet的timer似乎有问题
skynet.timeout 传进去 number 范围内的数值但是会溢出, 调查发现 skynet.timeout 调用的是 c 的方法: c.intcommand("TIMEOUT&qu ...
- 使用Triton部署chatglm2-6b模型
一.技术介绍 NVIDIA Triton Inference Server是一个针对CPU和GPU进行优化的云端和推理的解决方案. 支持的模型类型包括TensorRT.TensorFlow.PyTor ...
- Go语言常用标准库——json、文件操作、template、依赖管理及Go_module使用
文章目录 Go语言之json Marshal函数 Unmarshal函数 Go语言之文件操作 打开和关闭文件 读取文件 file.Read() 基本使用 循环读取 bufio读取文件 ioutil读取 ...
- C#堆排序算法
前言 堆排序是一种高效的排序算法,基于二叉堆数据结构实现.它具有稳定性.时间复杂度为O(nlogn)和空间复杂度为O(1)的特点. 堆排序实现原理 构建最大堆:将待排序数组构建成一个最大堆,即满足父节 ...
- Python3中的printable
import string characters = string.printable # printable 是用作字符串常量的预初始化字符串.里面包含所有的标点符号,数字 print(charac ...