SQL数据库语言基础之SqlServer分组查询总结
文章目录
- 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分组查询总结相关推荐
- SQL数据库语言基础之SqlServer条件查询、排序数据表、like模糊查询【大总结】
文章目录 一.语句查询数据(SELECT) 二.获取满足查询条件的语句(WHERE) 三.排序查询(ORDER BY) 四.高级条件查询 一.语句查询数据(SELECT) 1.在SSMS中查看数据 在 ...
- SQL数据库语言基础之SqlServer数据库原理与设计课程期末复习-条件查询实例练习【学生表、选课表、家庭作业表】
文章目录 1.简单查询 2.查询在1999年出生的学生学号.姓名.出生日期 3.三次作业成绩都在60分以上的学生学号.课程号 4.查询姓张学生学号.姓名和专业班级 5.查询03级的男生信息 6.查询没 ...
- SQL数据库语言基础之SqlServer多表连接查询与INNER JOIN内连接查询
文章目录 一.简单连接查询 二.多表连接查询 三.INNER JOIN 内连接查询 一.简单连接查询 1.直接连接:无连接规则连接两表,得到的是两个表的笛卡尔积. 连接后的行数=表1行数*表2行数 连 ...
- SQL数据库语言基础之SqlServer视图的创建、修改与视图数据的增删改查
文章目录 一.认识视图 二.创建.查询视图 三.修改.删除视图 四.修改视图数据(与操作表一样,只是把table换成view) 一.认识视图 1.视图的理解 从用户角度来看,一个视图是从一个特定的角度 ...
- SQL数据库语言基础之SqlServer数据表的六大约束(主键、外键、检查、非空、唯一性、默认值约束)的创建
文章目录 一.主键约束(primary key) 二.外键约束(foreign key) 三.检查约束(check) 四.非空约束(not null) 五.唯一性约束(unique) 六.默认值约束( ...
- SQL数据库语言基础之SqlServer表数据的插入、更新与删除
文章目录 一.数据的插入(INSERT INTO...VALUES) 二.数据的更新(UPDATE) 三.删除数据(DELETE) 一.数据的插入(INSERT INTO-VALUES) 1.数据插入 ...
- SQL数据库语言基础之SqlServer系统函数、聚合集合函数【大总结】
文章目录 1.聚合函数 2.类型转换函数 3.日期函数 4.数学函数 5.字符函数 6.其他系统函数 1.聚合函数 (1)聚合函数的概念 它是系统函数中最常用的一类函数,主要是对一组值进行计算,然后返 ...
- SQL数据库语言基础之SQL Server自带数据类型、自定义数据类型与使用、创建修改数据表
文章目录 一.几种数据类型 二.创建数据表 三.修改数据表结构 一.几种数据类型 1.Character 字符串类型 char.chr(5).varchar.varchar(5).text 数据类型 ...
- SQL注入 ——sql数据库操作基础(一)
本章目的 普及MySQL( MariaDB)薮据库的基础与进阶语法,加深对SQL命令语句的理解,为后续SQL注入攻击与防护实验打下坚实的基础. 基本概念 数据库分类 关系型数据库 ●关系型数据库模型是 ...
最新文章
- Windows2003服务器不支持FLV视频的解决方法
- NLP入门必知必会(一):Word Vectors
- 基于SSM实现租房平台管理系统
- 扬州古城门高挂大红春联迎新春 环卫工受邀揭幕
- 查看Linus中自带的jdk ,设置JAVA_HOME
- 第八章 流量复制/AB测试/协程
- Windows环境下配置JDK
- IScroll5中文API整理,用法与参考
- 阿里云容器服务发布 Knative 托管服务
- [转载] python 列表List中index函数的坑
- flowable设计器节点属性扩展_gooflow设计器API说明书
- 云呐|固定资产调拨流程(固定资产调拨需要哪些流程)
- 人机智能交互技术教学进度表(2017-2018-1)含测试 机器人方向本科限选课程
- 【Python turtle】使用turtle实现随机满天星星效果(完整代码+效果图)
- Python采集网易云音乐
- Codeforces Round #715 (Div. 2) B. TMT Document——思路分析,清晰易懂
- 【8082端口被占用】
- 【无标题】元宇宙背后的安全隐患
- [Substrate Recipes翻译]1.21 Tightly- and Loosely-Coupled Pallets
- python学习-字符串的驻留机制
热门文章
- SocketJs报错failed: Error during WebSocket handshake: Unexpected response code: 400
- 数据库报错SELECT list is not in GROUP BY clause and contains nonaggregated col
- 华为户外模式怎么设置_华为FreeLace Pro降噪器效果怎么样?降噪开启和设置教程!...
- java中el是什么_java中jsp的EL的定义以及使用
- 判断 json html标签,javascript如何判断是否为json?
- html绝对定位怎么页面居中,html – 如何将绝对定位的元素居中?
- openlayer 图层上下_OpenLayers 3 的图层体系结构
- java下载网络文件_java下载网络文件的方法有哪些
- python3.7怎么安装tensorflow_gpu_(更新版)python3.7 Windows10 tensorflow-GPU 安装
- 对象属性结构赋值_面向对象之构造器、代码块和内部类