MySQL汇总和分组数据


本文摘自PHP中文网,作者大家讲道理,侵删。

一 汇总和分组数据

查询语句 ---> 结果集(多条数据) ---> 聚合函数 ----> 单行记录

1.常用的聚合函数:

sum() 数字 对指定列中的所有非空值求总和

avg() 数字 对指定列中的所有非空值求平均值

min() 数字,字符,datetime 返回指定列中的最小数字,最早的日期或者最小的字符串

max() 数字,字符,datetime 返回指定列中的最大数字,最近的日期或者最大的字符集

count() 任意基于行的数据类型 统计结果集合众全部记录行的数量

例:查询玩家表中一共有多少名玩家信息

select count (user_qq) from users

select count(*) from users

例:查询QQ号是12301的玩家游戏的总分数

select sum(score) as '总分数' from scores where user_qq='12301'

例:查询QQ号是12302玩家的评价分数

select avg(score) as '平均分数’ from scores where user_qq='12302'

例:查询游戏编号的1的最高分数

select max(score) as '最高分数' from score 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 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 '平均分数' , sun(score) as '总分数' from scores group by user_qq orde by avg(score) desc

4.SELECT 语句的执行顺序

from 子句指定数据源

where 子句基于指定的条件对记录进行筛选

group by 子句将数据划分为多个分组

使用聚合函数进行计算

使用having子句筛选分组

使用order by 子句对结果集进行排序

阅读剩余部分

相关阅读 >>

mysql中关于事务的具体详解

mysql笔记之修改表的实现方法

mysql - cluster mysql 集群

mysql如何挂盘

mysql发生错误如何处理

实例讲解mysql修改开启允许远程连接

mysql如何实现多表查询?mysql多表查询的语句

mysql如何配置及mysql服务无法启动

windows系统服务器mysql报错innodb: attempted to open解决方法

mysql数据类型有哪些?mysql数据类型详解

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...