博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql--Order by排序、聚合函数(max/min/avg/sum)、分组(group by/ group_concat() )
阅读量:2393 次
发布时间:2019-05-10

本文共 1582 字,大约阅读时间需要 5 分钟。

排序语法:

select
*
from
表名
order
by
1
asc
|
desc
[,列
2
asc
|
desc
,...]
说明
  • 将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推
  • 默认按照列值从小到大排列(asc)
  • asc从小到大排列,即升序,默认排序
  • desc从大到小排序,即降序
例1:查询未删除男生信息,按学号降序
select
*
from
students
where
gender=
1
and
is_delete=
0
order
by
id
desc
;
例2:查询未删除学生信息,按名称升序
select
*
from
students
where
is_delete=
0
order
by
name
;

聚合函数

为了快速得到统计数据,经常会用到如下5个聚合函数
  • count(*)表示计算总行数,括号中写星与列名,结果是相同的
  • 聚合函数不能在 where 中使用
例1:查询学生总数
select
count
(*)
from
students;

最大值

  • max(列)表示求此列的最大值
例2:查询女生的最大年龄
select
max
(
age
)
from
students
where
gender=
2
;

最小值

  • min(列)表示求此列的最小值
例3:查询未删除的学生
最小编号
select
min
(
id
)
from
students
where
is_delete=
0
;

求和

  • sum(列)表示求此列的和
例4:查询男生的
总年龄
select
sum
(age)
from
students
where
gender=
1
;
-- 平均年龄
select
sum
(age)/
count
(*)
from
students
where
gender=
1
;

平均值

  • avg(列)表示求此列的平均值
例5:查询未删除女生的
年龄的平均值
select
avg
(
age
)
from
students
where
is_delete=
0
and
gender=
2
;
分组

group by

  1. group by的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组
  2. group by可用于单个字段分组,也可用于多个字段分组
例如:
select gender from students group by gender;
select gender from students group by gender;

group by + group_concat()

  1. group_concat(字段名)可以作为一个输出字段来使用,
  2. 表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值的集合
查询每种gender,都有哪些name
group by + group_concat()
查询每种gender所有人的avg(age),以及每种gender的,个数count(*),  同理还有sum()   max()   min()   

group by + having

  1. having 条件表达式:用来分组查询后指定一些条件来输出查询结果
  2. having作用和where一样,但having只能用于group by
select gender,count(*) from students group by gender having count(*)>2;

group by + with rollup

  1. with rollup的作用是:在最后新增一行,来记录当前列里所有记录的总和,  或者罗列各个数字(去重)
select gender,count(*) from students group by gender with rollup;

转载地址:http://saeab.baihongyu.com/

你可能感兴趣的文章
网易工程师 Ruheng 一文教你轻松学会 Git
查看>>
文字与编码的奥秘(下)
查看>>
阿里分布式事务框架 GTS 全解析
查看>>
轻量级 Web 框架 Gin 结构分析
查看>>
一个字节的网络漫游故事独白
查看>>
RabbitMQ 消息可靠性、延时队列以及高可用集群
查看>>
分布式系统的可靠性指的是什么 —— 你可能从来就没有认真思考过
查看>>
布隆过滤器过时了,未来属于布谷鸟过滤器?
查看>>
面试题 —— 数字幻方
查看>>
5折抢购最后一天 | 戴尔顶级配置电脑,限时秒!
查看>>
SpringBoot 究竟是如何跑起来的?
查看>>
阿里开源限流组件 Sentinel 集群流控全解析
查看>>
深度解密HTTP通信细节
查看>>
日活亿级用户的服务器架构要怎么搭?
查看>>
深入 LevelDB 数据文件 SSTable 的结构
查看>>
分布式系统技术难题--异地多活
查看>>
MySQL 是怎样运行的:从根儿上理解 MySQL
查看>>
一种简单易懂的 MyBatis 分库分表方案
查看>>
阿里巴巴 Nacos 分布式配置中心原理
查看>>
图解Go语言内存分配
查看>>