[SQL入门级] 接上篇,继续查询
距离上一篇时间隔得蛮久了,这篇继续查询,简单总结一下聚合函数、分组的知识。
一、聚合函数(组函数/多行函数)
何谓多行函数,顾名思义就是函数作用于多行数据得出一个输出结果,什么意思呢?看图:
那么常用的有哪些这样的函数呢?
AVG(平均值)
SUM(合计)
COUNT(计数)
MAX(最大值)
MIN(最小值)
STDDEV(标准差)
组函数使用的语法,用法很简单,但有两点要注意:
I. 函数参数类型
- 对数值型数据使用AVG和SUM函数
- 对任意数据类型的数据使用MIN、MAX、COUNT函数
II. 有关空值的处理
- 首先组函数是忽略空值的,例如COUNT(*)返回的是表中所有的记录数,而COUNT(expr)返回的是expr字段不为空的记录数
- 那么怎样来处理空值呢,就要用到上一篇中提到的NVL函数,SELECT AVG(NVL(commission_pct,0)) FROM employees
- DISTINCT关键字表达的非空且不重复,COUNT(DISTINCT expr)返回的expr非空且不重复的记录数
III. 不能在WHERE子句中使用组函数,这点结合后面的HAVING子句解释。
IV. 组函数可以嵌套使用
二、数据分组
GROUP BY子句,分组数据
意思咱就不废话了,用的时候注意两点:
- SELECT后面的所有列中,没有使用聚合函数的列,必须出现在GROUP BY后面,反过来包含在GROUP BY子句的中的列却不必包含在SELECT列表中。
- GROUP BY子句可以包含多个列,同意也适用规则1。
有点晕,什么意思呢?我来解释一下,判断一个sql语句是否合法其实可以试着去理解你要写的sql语句要表达的实际想法,例如:
- select department_id,job_id,avg(salary)
from employees
group by department_id,job_id
如上语句,我想要表达的意思是:从雇员这张表中求出不同部门和不同工种的人的平均工资,输出的格式是按照SELECT语句列表。那么如果我从SELECT列表中随便删掉一个字段,改变的只是我输出的格式,我还是按部门和工种进行分类了;但是如果只从GROUP
BY子句中删掉job_id,则语句表达的意思就不能成立了,我按部门进行分组,但是部门中有很多个工种,结果到底要怎样对应不得而知。
HAVING子句,过滤分组
- WHERE子句的作用是筛选满足条件的数据行,即在分组之前过滤数据,条件中不能使用聚合函数;使用WHERE条件显示特定的行;
- HAVING子句的作用是筛选满足条件的组,即在分组之后过滤分组,条件中经常包含聚合函数;使用HAVING条件显示特定的分组;
[SQL入门级] 接上篇,继续查询的更多相关文章
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- 你真的会玩SQL吗?之逻辑查询处理阶段
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- SQL Server-聚焦强制索引查询条件和Columnstore Index(九)
前言 本节我们再来穿插讲讲索引知识,后续再讲数据类型中的日期类型,简短的内容,深入的理解,Always to review the basics. 强制索引查询条件 前面我们也讲了一点强制索引查询的知 ...
- SQL Server2016 新功能实时查询统计信息
SQL Server2016 新功能实时查询统计信息 很多时候有这样的场景,开发抱怨DBA没有调优好数据库,DBA抱怨开发写的程序代码差,因此,DBA和开发都成为了死对头,无法真正排查问题. DBA只 ...
- SQL的多表连接查询
SQL的多表连接查询 多表连接查询具有两种规范,SQL92和SQL99规范. SQL92规范支持下列多表连接查询: (1)等值连接: (2)非等值连接: (3)外连接: (4)广义笛卡尔积: SQL9 ...
- 第1/24周 SQL Server 如何执行一个查询
大家好,欢迎来到第1周的SQL Server性能调优培训.在我们进入SQL Server性能调优里枯燥难懂的细节内容之前,我想通过讲解SQL Server如何执行一个查询来建立基础.这个部分非常重要, ...
- 在SQL Server 2016里使用查询存储进行性能调优
作为一个DBA,排除SQL Server问题是我们的职责之一,每个月都有很多人给我们带来各种不能解释却要解决的性能问题. 我就多次听到,以前的SQL Server的性能问题都还好且在正常范围内,但现在 ...
- SQL总结(七)查询实战
SQL总结(七)查询实战 一.场景 给定一个场景,学生选课系统为例,大家很熟悉. 主要关系: 学生(学号.姓名.年龄.性别) 教师(教师ID,教师姓名) 课程(课程ID,课程名称,任教教师ID) 成绩 ...
- Sql Server来龙去脉系列之三 查询过程跟踪
我们在读写数据库文件时,当文件被读.写或者出现错误时,这些过程活动都会触发一些运行时事件.从一个用户角度来看,有些时候会关注这些事件,特别是我们调试.审核.服务维护.例如,当数据库错误出现.列数据被更 ...
随机推荐
- 服务器中配置多个Tomcat及内存溢出配置
1.更改server.xml文件中端口(启动.关闭端口) 2.在startup.bat文件开头加上 SET JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0 ...
- PHP关于反斜杠处理函数addslashes()和stripslashes()的用法
addslashes() 例子: <?php $str = "Who's John Adams?"; echo $str . " This is not safe ...
- JQUERY attr prop 的区别 一个已经被淘汰
在做jquery 全选 全不选的项目中, 1..prop( propertyName ) 获取匹配集合中第一个元素的Property的值 2. .prop( propertyName, value ) ...
- 【转】一个新的UIButtonMessage 给NGUI,使用委托,自动选择Receiver提供的方法
http://blog.csdn.net/chiuan/article/details/9290651?utm_source=tuicool&utm_medium=referral 来分享一个 ...
- 关于IOS的唯一标识总结
APPLE官方宣布在2013年5月后,使用 UUID的APP将不能通过审核,同时APPLE增加了广告标识符(IDFA)和IDFV. 1.有什么方法获取UUID? //CFUUID CFUUIDRef ...
- vert.x学习(三),Web开发之Thymeleaf模板的使用
在vert.x中使用Thymeleaf模板,需要引入vertx-web-templ-thymeleaf依赖.pom.xml文件如下 <?xml version="1.0" e ...
- WCF (413) Request Entity Too Large
有网友碰到过这样的问题:wcf 远程服务器返回了意外响应: (413) Request Entity Too Large. - wsx_net,问题详细内容为:挺不错的博文:wcf 远程服务器返回了意 ...
- Hive&Hbase
1. 两者分别是什么? Apache Hive是一个构建在Hadoop基础设施之上的数据仓库.通过Hive可以使用HQL语言查询存放在HDFS上的数据.HQL是一种类SQL语言,这种语言最终被转化为M ...
- java 基础一
一.Java命名规则 Java命名规则有两种,第一种匈牙利命名要求望名知意,第二种驼峰命名要求首字母大写(关键单词) 类名必须首字母大写,方法名首字母小写后面的单词首字母大写 .类名和方法名要用英文开 ...
- iOS上线...踩坑
总结一下上线过程中出现的问题: 1.AppStore不允许app中出现下载别的app的提示 (例如:三方登录的时候,检测到手机未安装QQ,微信,微博,提示你的设备未安装!❌❌❌ 正确的做法:未安装的, ...


