现有以下三张表,分别为: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动态化多个分组查询的更多相关文章

  1. 关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询

    前言 上一篇关系数据库常用SQL语句语法大全主要是关系型数据库大体结构,本文细说一下关系型数据库查询的SQL语法. 语法回顾 SELECT [ALL|DISTINCT] <目标列表达式>[ ...

  2. Hibernate 分组查询 子查询 原生SQL

    分组查询: 使用group by关键字对数据分组,使用having关键字对分组数据设定约束条件,从而完成对数据分组和统计 1.1 聚合函数:常被用来实现数据统计功能 ① count() 统计记录条数 ...

  3. 08章 分组查询、子查询、原生SQL

    一.分组查询 使用group by关键字对数据分组,使用having关键字对分组数据设定约束条件,从而完成对数据分组和统计 1.1 聚合函数:常被用来实现数据统计功能 ① count() 统计记录条数 ...

  4. SQL分组查询group by

    注意:select 后的字段,必须要么包含在group by中,要么包含在having 后的聚合函数里. 1. GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用 group ...

  5. SQL group by分组查询(转)

    本文导读:在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析.创建分组是通过GROUP BY子句实现的.与WHERE子句不同,GROUP BY子句用于归纳 ...

  6. sql sever分组查询和连接查询

    分组查询select 查询信息 from 表名where 条件group by 按照列分组(可多个 ,隔开)order by 排序方式(查询信息如果列名和聚合函数同时出现,要么在聚合函数中出现,要么就 ...

  7. Oracle总结【SQL细节、多表查询、分组查询、分页】

    前言 在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了...印象中就只有基本的SQL语句和相关一些概念....写下本博文的原因就是记载着Or ...

  8. SQL Server数据库————连接查询和分组查询

    SQL Server数据库————连接查询和分组查询 分组查询 select 列from  <表名> where  …… group by  列 注意:跟order  by一样group ...

  9. SQL分组查询及聚集函数的使用

    今天要做一个查询统计功能,一开始有点犯难,上午尝试大半天才写出统计sql语句,才发现自己sql分组查询及聚集函数没学好:其实就是group by子句和几个聚集函数,熟练使用统计功能很简单.在此总结下今 ...

  10. sql server——分组查询(方法和思想)

    思想 先排序在汇总 sql server里分组查询通常用于配合聚合函数,达到分类汇总统计的信息.而其分类汇总的本质实际上就是先将信息排序,排序后相同类别的信息会聚在一起,然后通过需求进行统计计算. 使 ...

随机推荐

  1. filter() 函数的学习

    1.    filter() 函数 用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换.该接收两个参数, 第一个为函数,第二个为序列,序列的每个 ...

  2. 论文解读(SimGCL)《Are Graph Augmentations Necessary? Simple Graph Contrastive Learning for Recommendation》

    Note:[ wechat:Y466551 | 可加勿骚扰,付费咨询 ] 论文信息 论文标题:Are Graph Augmentations Necessary? Simple Graph Contr ...

  3. Airtest的iOS实用接口介绍

    1. 前言 前段时间Airtest更新了1.3.0.1版本,里面涉及非常多的iOS功能新增和改动,今天想详细跟大家聊一下里面的iOS设备接口. PS:本文示例均使用本地连接的iOS设备,Airtest ...

  4. Codeforces 1462F The Treasure of The Segments

    题意 给\(n(1\leq n\leq 2*10^5)\)个线段$[l_i,r_i] (1≤l_i≤r_i≤10^9) $,问最少删除几个线段,使得剩下线段中,有至少一个线段与所有线段相交. 分析 对 ...

  5. 不关闭Tamper Protection(篡改保护)下强制卸载Windows Defender和安全中心所有组件

    个人博客: xzajyjs.cn 背景介绍 由于微软不再更新arm版本的win10系统,因此只能通过安装insider preview的镜像来使用.而能找到的win10 on arm最新版镜像在安装之 ...

  6. 2.7 PE结构:重定位表详细解析

    重定位表(Relocation Table)是Windows PE可执行文件中的一部分,主要记录了与地址相关的信息,它在程序加载和运行时被用来修改程序代码中的地址的值,因为程序在不同的内存地址中加载时 ...

  7. Solution -「洛谷 P6287」「COCI 2016-2017」Mag

    Description Link. 定义一条链的价值为链上点权乘积除以节链上点数,求一条价值最小的链. Solution 结论:答案链上最多包含一个 \(2\)(其余全为 \(1\)),并且不在链的两 ...

  8. Solution -「洛谷 P7395」「CoE-I 2021C」弹珠游戏

    Description Link. 游戏在 \(4\times4\) 的菱形棋盘上进行: 两名玩家轮流放置弹珠,可以在横向.纵向.\(45\) 度斜线.\(135\) 度斜线方向未放置弹珠的位置连续放 ...

  9. js合并对象常用方法

    const person = { name: 'David Walsh', gender: 'Male' }; const tools = { computer: 'Mac', editor: 'At ...

  10. Python socket实现ftp文件下载服务

    简要 使用Python socket和多线程实现一个FTP服务下载.下面的示例是固定下载某一个任意格式文件. 仅仅为了展示如果使用socket和多线程进行文件下载 服务端代码 import socke ...