Mysql语法之DQL查询的多行函数

Mysql的多行函数和分组

目录

多行函数


概念

不管函数处理多少条,只返回一条记录,数据需要进行分组,如果数据可以分为多个组,那么返回的数据条数和组数相同。

常用的多行函数

  • max 最大值
  • min 最小值
  • avg 平均值
  • sum 求和
  • count 求总数

数据分组


概念

按照某一个条件进行分组,每一组返回对应的结果

语法

  • group by
    可以对指定的列进行分组,列尽量有相同的
  • having
    可以对分组之后的数据进行过滤,所以能出现在having中的比较项一定是被分组的列或者是组函数

where和having的区别

  • where称之为行级过滤,处理的是表中每一行数据的过滤
  • having称之为组级过滤,处理的是分组之后的每一组数据

能使用where的,尽量不要使用having

语句关键字及执行顺序


语句关键字

  • select: 我们要显示那些列的数据

  • from: 从那张表中获取数据

  • where: 从表中获取数据的时候进行行级的数据过滤

  • group by: 对数据进行分组处理,一组获取对应的结果

  • having: 组级过滤,组级过滤的数据必须是分组条件或者是组函数

  • order by: 排序 asc desc

  • limit:数据数限制

执行顺序

from --> where -->group by -->select -->having-->order by-->limit

实际操作


基本语句格式和多行操作

语句格式:

  • select 列名 from 表名 group by 列名;

代码展示:

sql 复制代码
select * from sc;
select count(*)from sc;
select sno,max(score),min(score),avg(score),sum(score),count(*) from sc group by sno;

运行结果:


筛选语句格式

  • select 列名 from 表名 group by 列名 having 条件 /(order by 列名 asc|desc /limit n)
  • select 列名 from 表名 where 条件 group by 列名 /(order by 列名 asc|desc /limit n)

代码展示:

sql 复制代码
select sno,score from sc;
select sno,avg(score) from sc group by sno;
select sno,avg(score) from sc group by sno having avg(score) > 80; 
select sno,avg(score) from sc where score >80 group by sno order by avg(score) asc;
select sno,avg(score) from sc where score >80 group by sno limit 3;
select sno,avg(score) from sc group by sno having avg(score) > 70 order by avg(score) desc;

运行结果:






相关推荐
国服第二切图仔8 分钟前
Rust开发之使用 Trait 定义通用行为——实现形状面积计算系统
开发语言·网络·rust
前端小咸鱼一条20 分钟前
14. setState是异步更新
开发语言·前端·javascript
新手小白*31 分钟前
Redis Cluster集群理论
数据库·redis·缓存
15Moonlight1 小时前
09-MySQL内外连接
数据库·c++·mysql
无知就要求知1 小时前
golang封装可扩展的crontab
开发语言·后端·golang
dessler1 小时前
MYSQL-数据库介绍
linux·运维·mysql
weixin_467209281 小时前
Qt Creator打开项目提示no valid settings file could be found
开发语言·qt
大G的笔记本1 小时前
Redis 分布式锁如何保证同一时间只有一个客户端持有锁
数据库·redis·分布式
呆呆小金人1 小时前
SQL优化实战:从慢查询到高效查询
大数据·数据库·数据仓库·sql·数据库开发·etl·etl工程师
无聊的小坏坏1 小时前
Redis 从基础到实战
数据库·redis·缓存