函数的理解 group by order by理解

简介: 函数的分类 单行函数 对每一行记录都有作用 对每一行记录都能返回一个结果 例子lower(ename) 对每一个记录的ename字段都返回一个结果多行函数 对一组记录返回一个结果 聚合函数就是多行函数 例子l...

函数的分类
单行函数 对每一行记录都有作用 对每一行记录都能返回一个结果
例子lower(ename) 对每一个记录的ename字段都返回一个结果

多行函数
对一组记录返回一个结果
聚合函数就是多行函数
例子lower(ename)
select max(sal)from emp

常用的聚合函数
avg 取平均值
sum 取所有值之和
count(ename) 值的个数 不包含 ename=null的值
count(distinct ename)统计不重复的值
count(*)选中的行数
max() 最高值 适用于数值型 字符型和日期型的列
min()最低值

用聚合函数作用于某一字段时,会忽略所有的null行

group by 用于对查询的结果分组统计
要想把一个表中的记录分成若干组,就需要用group by
select name,sum(age) from student group by name 就是根据名字来分组的

重要的注意点::

select name,age from student group by name会报错 因为一个名字可能对应多个人 意思就是说会有多个age 这个时候 一个名字对应一行数据
但是age也只能对应一行 可实际上age可以有多个就有问题了 除非age放在聚合函数

having语句的使用
having子句不能出现字段的别名,只能使用字段最原始的名字,where和havingi样都不允许出现字段别名,只允许出现原始的字段名字
having是用来对分组后的数据进行进一步的过滤 所以使用having时通常先用group by 进行分组
比如 select deptno from emp group by deptno having deptno>10
having 里面的数据必须时select排序中有的 排序中没有的 应该放在where放在前面条件中就筛洗了

总结 having子句出现的字段必须是分组后整个组的总体信息
select deptno, avg(sal) as “平均工资”
from emp
group by deptno
having count(*) > 3 这种情况下 count没有出现在select却也可以出现在having 后面

select deptno, avg(sal) as “平均工资”
from emp
group by deptno
having ename like ‘%A%’这种就不可以 因为ename没有出现在select中

order by
select *from emp order by deptno 按照deptno升序排序
select *from emp order by deptno desc按照deptno降序排序
select *from emp order by deptno,sal desc 按照deptno升序排序,如果deptno相等 就按照 sal降序排序

不允许再where 子句中使用分组函数实例
比如:
select deptno, avg(sal) “平均工资”, count(*) “部门人数”, sum(sal) “部门工资总和”
from emp
where avg(sal) > 2000 –error 因为where是对原始的数据过滤 不能使用聚合函数 因为还没有分组
group by deptno
having sum(sal) > 5000 就是会报错的,因为where有聚合函数

select语句的基本结构
select select_list
from table_list
join 如果有聚合函数 需要对聚合函数取别名
on
where 不能跟聚合函数
group by
having 后面不能跟别名
order by
where 子句是用来筛选由from子句指定的表的行
group by 是用来将where子句输出的行分组
select中只能写group by里面的列或者是表的整体信息,比如count avg之类的函数 前提是有group by
having 是用来筛选分组汇总的行
order by是用来控制最后显示的效果
在内连接里面 where要放在最后

这里写图片描述

目录
相关文章
|
Kubernetes Cloud Native 网络协议
云原生下的开发测试实践
近日,阿里巴巴旗下企业级一站式DevOps平台——阿里云·云效正式开启公测,为了让广大开发者更好地了解“新云效”,《云效说码》栏目特别策划了《为云研发而生 解密云效公测版专场》系列分享,邀请了多位阿里巴巴技术专家通过视频直播的方式与大家在线交流,分享云效产品的亮点和技术优势。本系列分享共有五节内容,本文整理自阿里巴巴技术专家林帆(金戟)和郑云龙(砧木)的视频分享《云原生下的开发测试》。
1786 86
云原生下的开发测试实践
收集的几个国外在线接收短信验证码的网站
有时候,在某些平台上,我们可能需要注册一个临时账号。而注册过程中又需要输入手机号进行短信验证,但是我们又不想泄露隐私,所以这时候一些临时短信接收服务便派上了用场。以下收集的网站都是在线提供一些国外手机号,当你需要进行短信验证的时候(比如注册某个账号),这时你可以使用网站上的提供手机号进行接码,网站上会公开短信的所有内容。
43245 0
|
搜索推荐 算法 知识图谱
搜索场景下的智能推荐演变之路
本文中,阿里巴巴高级算法专家王悦就为大家分享了搜索场景下的智能推荐演变之路。
|
7月前
|
存储 安全 Java
深入理解 Java 中的 instanceof 关键字
本文深入解析了 Java 中的 `instanceof` 关键字,探讨其在类型判断中的作用。作为二元操作符,`instanceof` 可用于检查对象是否为某类实例或实现特定接口,避免类型转换异常 (`ClassCastException`)。文章通过多态性下的类型判断、安全类型转换、接口实现检测及集合元素类型判定等实际应用场景,展示了 `instanceof` 的强大功能。掌握该关键字可提高代码健壮性,确保运行时类型安全。
515 0
|
前端开发 容灾 应用服务中间件
云服务器购买的新数据盘,如何进行分区、挂载新目录?
云服务器购买的新数据盘,如何进行分区、挂载新目录?
1634 0
|
存储 SQL 数据挖掘
虚拟化数据恢复—EXSI虚拟机误还原快照的数据恢复案例
虚拟化技术原理是将硬件虚拟化供不同的虚拟机使用,一台物理机上可以有多台虚拟机。人为误操作或者物理机故障会导致上层虚拟机不可用,甚至虚拟机里的重要数据丢失。下面给大家分享一个vmware虚拟化误操作还原快照的数据恢复案例。 虚拟化数据恢复环境: 一台由物理机迁移到EXSI上面的虚拟机,迁移完成后做了一个快照。该虚拟机上运行SQL Server数据库,记录了几年的数据。 EXSI虚拟化平台上一共有数十台虚拟机,EXSI连接了一台EVA存储,所有的虚拟机(包括故障虚拟机)都放在EVA存储上。
|
存储 监控 安全
《SelectDB 新一代日志存储分析平台解决方案》白皮书重磅发布|立即下载
作为基于 Apache Doris 打造的现代化数据仓库,SelectDB 不拘泥于传统数仓的限制,针对日志数据的特点引入了多项创新性技术,使用户可基于 SelectDB 构建开放、高性能、低成本、统一的日志存储分析平台, 截至目前已在近百家行业内知名企业中落地。
394 0
《SelectDB 新一代日志存储分析平台解决方案》白皮书重磅发布|立即下载
|
运维 监控 Cloud Native
茶百道全链路可观测实战
茶百道全链路可观测实战
2085 113
|
新零售 消息中间件 监控
消息中间件系列一、消息中间件的基本了解
一、消息中间件的定义:   没有标准定义,一般认为,采用消息传送机制/消息队列 的中间件技术,进行数据交流,用在分布式系统的集成 二、为什么要用消息中间件? 解决分布式系统之间消息的传递。电商场景:  用户下单减库存,调用物流系统,系统扩充后服务化和业务拆分。
4761 105
|
机器学习/深度学习 固态存储 算法
SSD没有错付 | SSD改进版本来啦!PSSD携实时性与高精度归来!
SSD没有错付 | SSD改进版本来啦!PSSD携实时性与高精度归来!
553 0
SSD没有错付 | SSD改进版本来啦!PSSD携实时性与高精度归来!