MySQL学习笔记——汇总和分组数据

1、聚合函数
示例:查询玩家表中一共有多少名玩家信息
select count(user_QQ) from users --不统计空值所在的行
或者
select count(*) from users --统计某一列中全部没有空值的数据的行数

示例:查询QQ号是12301的玩家游戏的总分数
select sum(score) AS '总分数' from scores 
where user_QQ='12301'

示例:查询QQ号是12301的玩家的平均分数
select avg(score) AS'平均分数' from scores
where user_QQ='12301'

示例:查询游戏编号是1的游戏的最高分
select max(score) AS '最高分'
from scores where gno='1'

示例:查询QQ号是12302的玩家的总分,平均分,和最高分
select sum(score) AS '总分',avg(score) AS '平均分',max(score) AS '最高分'
from scores
where user_QQ='12302'

2、在结果集内分组
使用group by 分组

示例:查询每个玩家的总分数,平均分数,最高分数
select user_QQ,sum(score) AS '总分',avg(score) AS '平均分',max(score) AS '最高分'
from scores
group by user_QQ 

示例:查询每个玩家的平均分数,并且显示玩家的QQ号和平均分数
select user_QQ,avg(score) AS '平均分'
from scores
group by user_QQ

3、筛选分组的结果
在使用group by 子句时,可用having子句为分组统计进一步设置统计条件,
having子句于group by 子句的关系相当于where子句于select子句之间的关系

于where子句的区别是,在having子句中是以聚合函数的统计结果作为筛选条件

示例:查询平均分数大于4000的玩家QQ号,总分数,平均分数
select user_QQ,sum(score) AS '总分数',avg(score) AS '平均分数'
from scores
group by user_QQ
having avg(score)>4000

示例:查询所有用户的平均分数,和总数分,并按照平均分数倒序排列
select user_QQ,avg(score) AS '平均分数',sum(score) AS '总分数'
from scores
group by user_QQ
order by avg(score) desc

4、select 语句的执行顺序


from 子句指定数据源
where 子句基于指定的条件对记录进行筛选
group by 子句将数据划分为多个分组
使用聚合函数进行计算
使用having子句进行筛选分组
使用order by 子句对结果集进行排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值