函数的理解 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要放在最后

这里写图片描述

目录
相关文章
|
8月前
|
存储 安全 Java
深入理解 Java 中的 instanceof 关键字
本文深入解析了 Java 中的 `instanceof` 关键字,探讨其在类型判断中的作用。作为二元操作符,`instanceof` 可用于检查对象是否为某类实例或实现特定接口,避免类型转换异常 (`ClassCastException`)。文章通过多态性下的类型判断、安全类型转换、接口实现检测及集合元素类型判定等实际应用场景,展示了 `instanceof` 的强大功能。掌握该关键字可提高代码健壮性,确保运行时类型安全。
600 0
|
11月前
|
人工智能 算法 计算机视觉
【01】opencv项目实践第一步opencv是什么-opencv项目实践-opencv完整入门以及项目实践介绍-opencv以土壤和水滴分离的项目实践-人工智能AI项目优雅草卓伊凡
【01】opencv项目实践第一步opencv是什么-opencv项目实践-opencv完整入门以及项目实践介绍-opencv以土壤和水滴分离的项目实践-人工智能AI项目优雅草卓伊凡
407 63
【01】opencv项目实践第一步opencv是什么-opencv项目实践-opencv完整入门以及项目实践介绍-opencv以土壤和水滴分离的项目实践-人工智能AI项目优雅草卓伊凡
|
存储 SQL 数据挖掘
虚拟化数据恢复—EXSI虚拟机误还原快照的数据恢复案例
虚拟化技术原理是将硬件虚拟化供不同的虚拟机使用,一台物理机上可以有多台虚拟机。人为误操作或者物理机故障会导致上层虚拟机不可用,甚至虚拟机里的重要数据丢失。下面给大家分享一个vmware虚拟化误操作还原快照的数据恢复案例。 虚拟化数据恢复环境: 一台由物理机迁移到EXSI上面的虚拟机,迁移完成后做了一个快照。该虚拟机上运行SQL Server数据库,记录了几年的数据。 EXSI虚拟化平台上一共有数十台虚拟机,EXSI连接了一台EVA存储,所有的虚拟机(包括故障虚拟机)都放在EVA存储上。
|
存储 监控 安全
《SelectDB 新一代日志存储分析平台解决方案》白皮书重磅发布|立即下载
作为基于 Apache Doris 打造的现代化数据仓库,SelectDB 不拘泥于传统数仓的限制,针对日志数据的特点引入了多项创新性技术,使用户可基于 SelectDB 构建开放、高性能、低成本、统一的日志存储分析平台, 截至目前已在近百家行业内知名企业中落地。
423 0
《SelectDB 新一代日志存储分析平台解决方案》白皮书重磅发布|立即下载
|
11月前
|
人工智能 弹性计算 运维
云端问道7期方案教学-使用操作系统智能助手OS Copilot轻松运维与编程
本文介绍了阿里云基础软件团队推出的操作系统智能助手 OS Copilot,旨在解决 Linux 开发与运维中的痛点。OS Copilot 基于大模型和操作系统领域知识构建,支持自然语言问答、命令辅助执行、系统运维优化及代码生成等功能,极大降低了学习成本和工作量。文章详细阐述了其产品架构、典型应用场景以及实验反馈渠道,帮助用户更高效地进行系统管理和编程。目前该产品处于公测阶段,免费提供给阿里云 ECS 实例和 Alinux 3 系统用户使用。
186 1
|
人工智能 自然语言处理 语音技术
智能语音交互:AI如何重塑人际沟通###
【10月更文挑战第22天】 本文旨在探讨智能语音交互技术如何深刻改变我们的人际沟通方式,从历史沿革、技术原理、应用领域到未来趋势,全面剖析这一AI技术的魅力与影响。通过生动实例与通俗语言,揭示智能语音交互背后的科技力量,以及它如何让沟通更自然、高效,同时引发关于隐私、伦理等问题的深思。 ###
487 4
|
存储
【计算机系统结构】堆栈、累加、通用寄存器型机器对比
【计算机系统结构】堆栈、累加、通用寄存器型机器对比
827 0
|
机器学习/深度学习 固态存储 算法
SSD没有错付 | SSD改进版本来啦!PSSD携实时性与高精度归来!
SSD没有错付 | SSD改进版本来啦!PSSD携实时性与高精度归来!
569 0
SSD没有错付 | SSD改进版本来啦!PSSD携实时性与高精度归来!
|
存储 Ubuntu 关系型数据库
7天突破PolarDB for Postgre 2022版—第一讲 单机本地存储部署实例
分享人:棠羽,阿里云智能数据库产品事业部PolarDB产品部内核工程师
7天突破PolarDB for Postgre 2022版—第一讲  单机本地存储部署实例
|
设计模式 SQL 测试技术
一文理解 DDD 领域驱动设计!
以一种领域专家、设计人员、开发人员都能理解的通用语言作为相互交流的工具,在交流的过程中发现领域概念,然
一文理解 DDD 领域驱动设计!