文章目录

  • 1、分组的概念
  • 2、聚合函数与分组配合使用
  • 3、查询数据的直方图(REPLICATE())
  • 4、排序分组结果(ORDER BY放在分组后面)
  • 5、反转查询(CASE与分组的结合)
  • 6、两个分组条件(前面的优先级高)
  • 7、HAVIG子句分组条件(只查询分组的某些字段)
  • 8、where、having、group by、order by的顺序

1、分组的概念

(1)就是按照字段的值进行划分组别并去除重复值。比如将性别进行分组,正常情况下则可以分成两组,一组是男性,一组是女性。

--按性别进行分组,查看性别
SELECT SEX
FROM STU
GROUP BY SEX

(2)注意
分组查询的字段只能是该分组字段;
或者是使用 聚合函数 的按照该分组之后的字段。

--错误:
SELECT *
FROM STU
GROUP BY SEXSELECT CLASS,BIRTH
FROM STU
GROUP BY SEX--正确:
SELECT SEX
FROM STU
GROUP BY SEXSELECT SEX,COUNT(CLASS),COUNT(BIRTH)
FROM STU
GROUP BY SEX

2、聚合函数与分组配合使用

(1)统计 生物01 班级的女生人数

SELECT CLASS,COUNT(*) AS '女生人数'
FROM STU
WHERE CLASS='生物01' AND SEX='女'
GROUP BY CLASSSELECT * FROM STU


先进行GROUP分组,分成5个组;
再在每个组中找WHERE条件,CLASS=‘生物01’ AND SEX=‘女’;
最后列出CLASS行和对应满足WHERE条件的数量。

(2)错误示范

不分组是无法筛选出同时满足 字段和聚合函数 条件的结果。

3、查询数据的直方图(REPLICATE())

查询选课的人数直方图:

SELECT H_CNO,REPLICATE('*', COUNT(*)*3) AS '选课人数'
FROM HOMEWORKS
GROUP BY H_CNO


REPLICATE()函数中的第一个参数是直方图表示的符号,第二个参数是每计算一个COUNT则增长的数量,*3表示增长3个。

因此K411表示3个人,K422表示2个人……

此外,还需要按照课程号进行分组,再每个分组(课程)中进行统计人数。

4、排序分组结果(ORDER BY放在分组后面)

按照统计的选修每个课程的人数量进行降序排列:

SELECT H_CNO,REPLICATE('*', COUNT(*)*3) AS '选课人数'
FROM HOMEWORKS
GROUP BY H_CNO
ORDER BY COUNT(*) DESCSELECT * FROM HOMEWORKS

5、反转查询(CASE与分组的结合)

将每个班级的男生与女生人数统计出来:

SELECT CLASS,COUNT(casewhen SEX='男' then 1else NULL end) AS '男生人数',COUNT(casewhen SEX='女' then 1else NULL end) AS '女生人数'
FROM STU
GROUP BY CLASSSELECT * FROM STU

6、两个分组条件(前面的优先级高)

SELECT CLASS,COUNT(SNAME) AS '人数'
FROM STU
GROUP BY CLASSSELECT CLASS,COUNT(SNAME) AS '人数'
FROM STU
GROUP BY CLASS,SEX


当有2个分组条件时,前面的分组条件优先级高,也就是先按照前面的字段进行分组,再按照后面的字段进行分组。

7、HAVIG子句分组条件(只查询分组的某些字段)

分组查询时将其他字段信息过滤掉,这样就可以针对性得查询字段。与where不同的是,having是在分组时就筛选出某些字段值,也就是确定了哪些分组。

having是在分组时筛选组,where是筛选结果。不过二者在很多时候可以相互替换。

注意:having中可以使用聚合函数,而where中不可以使用聚合函数。

查询 爆破01 和 生物01 班级的人数:

SELECT CLASS,COUNT(*) AS '人数'
FROM STU
GROUP BY CLASS
HAVING CLASS IN('爆破01','生物01')
ORDER BY COUNT(*) DESC

8、where、having、group by、order by的顺序

(1)SELECT
(2)FROM
(3)WHERE
(4)GROUP BY
(5)HAVING
(6)ORDER BY

SQL数据库语言基础之SqlServer分组查询总结相关推荐

  1. SQL数据库语言基础之SqlServer条件查询、排序数据表、like模糊查询【大总结】

    文章目录 一.语句查询数据(SELECT) 二.获取满足查询条件的语句(WHERE) 三.排序查询(ORDER BY) 四.高级条件查询 一.语句查询数据(SELECT) 1.在SSMS中查看数据 在 ...

  2. SQL数据库语言基础之SqlServer数据库原理与设计课程期末复习-条件查询实例练习【学生表、选课表、家庭作业表】

    文章目录 1.简单查询 2.查询在1999年出生的学生学号.姓名.出生日期 3.三次作业成绩都在60分以上的学生学号.课程号 4.查询姓张学生学号.姓名和专业班级 5.查询03级的男生信息 6.查询没 ...

  3. SQL数据库语言基础之SqlServer多表连接查询与INNER JOIN内连接查询

    文章目录 一.简单连接查询 二.多表连接查询 三.INNER JOIN 内连接查询 一.简单连接查询 1.直接连接:无连接规则连接两表,得到的是两个表的笛卡尔积. 连接后的行数=表1行数*表2行数 连 ...

  4. SQL数据库语言基础之SqlServer视图的创建、修改与视图数据的增删改查

    文章目录 一.认识视图 二.创建.查询视图 三.修改.删除视图 四.修改视图数据(与操作表一样,只是把table换成view) 一.认识视图 1.视图的理解 从用户角度来看,一个视图是从一个特定的角度 ...

  5. SQL数据库语言基础之SqlServer数据表的六大约束(主键、外键、检查、非空、唯一性、默认值约束)的创建

    文章目录 一.主键约束(primary key) 二.外键约束(foreign key) 三.检查约束(check) 四.非空约束(not null) 五.唯一性约束(unique) 六.默认值约束( ...

  6. SQL数据库语言基础之SqlServer表数据的插入、更新与删除

    文章目录 一.数据的插入(INSERT INTO...VALUES) 二.数据的更新(UPDATE) 三.删除数据(DELETE) 一.数据的插入(INSERT INTO-VALUES) 1.数据插入 ...

  7. SQL数据库语言基础之SqlServer系统函数、聚合集合函数【大总结】

    文章目录 1.聚合函数 2.类型转换函数 3.日期函数 4.数学函数 5.字符函数 6.其他系统函数 1.聚合函数 (1)聚合函数的概念 它是系统函数中最常用的一类函数,主要是对一组值进行计算,然后返 ...

  8. SQL数据库语言基础之SQL Server自带数据类型、自定义数据类型与使用、创建修改数据表

    文章目录 一.几种数据类型 二.创建数据表 三.修改数据表结构 一.几种数据类型 1.Character 字符串类型 char.chr(5).varchar.varchar(5).text 数据类型 ...

  9. SQL注入 ——sql数据库操作基础(一)

    本章目的 普及MySQL( MariaDB)薮据库的基础与进阶语法,加深对SQL命令语句的理解,为后续SQL注入攻击与防护实验打下坚实的基础. 基本概念 数据库分类 关系型数据库 ●关系型数据库模型是 ...

最新文章

  1. Windows2003服务器不支持FLV视频的解决方法
  2. NLP入门必知必会(一):Word Vectors
  3. 基于SSM实现租房平台管理系统
  4. 扬州古城门高挂大红春联迎新春 环卫工受邀揭幕
  5. 查看Linus中自带的jdk ,设置JAVA_HOME
  6. 第八章 流量复制/AB测试/协程
  7. Windows环境下配置JDK
  8. IScroll5中文API整理,用法与参考
  9. 阿里云容器服务发布 Knative 托管服务
  10. [转载] python 列表List中index函数的坑
  11. flowable设计器节点属性扩展_gooflow设计器API说明书
  12. 云呐|固定资产调拨流程(固定资产调拨需要哪些流程)
  13. 人机智能交互技术教学进度表(2017-2018-1)含测试 机器人方向本科限选课程
  14. 【Python turtle】使用turtle实现随机满天星星效果(完整代码+效果图)
  15. Python采集网易云音乐
  16. Codeforces Round #715 (Div. 2) B. TMT Document——思路分析,清晰易懂
  17. 【8082端口被占用】
  18. 【无标题】元宇宙背后的安全隐患
  19. [Substrate Recipes翻译]1.21 Tightly- and Loosely-Coupled Pallets
  20. python学习-字符串的驻留机制

热门文章

  1. SocketJs报错failed: Error during WebSocket handshake: Unexpected response code: 400
  2. 数据库报错SELECT list is not in GROUP BY clause and contains nonaggregated col
  3. 华为户外模式怎么设置_华为FreeLace Pro降噪器效果怎么样?降噪开启和设置教程!...
  4. java中el是什么_java中jsp的EL的定义以及使用
  5. 判断 json html标签,javascript如何判断是否为json?
  6. html绝对定位怎么页面居中,html – 如何将绝对定位的元素居中?
  7. openlayer 图层上下_OpenLayers 3 的图层体系结构
  8. java下载网络文件_java下载网络文件的方法有哪些
  9. python3.7怎么安装tensorflow_gpu_(更新版)python3.7 Windows10 tensorflow-GPU 安装
  10. 对象属性结构赋值_面向对象之构造器、代码块和内部类