MySQL数据库— 汇总和分组数据
一 汇总和分组数据
查询语句 ---> 结果集(多条数据) ---> 聚合函数 ----> 单行记录
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 子句对结果集进行排序
二 连接查询
1. 多表连接
例:查询分数信息,显示玩家昵称,游戏名称和分数
select user_name as '昵称', game as '游戏名称' , score as '分数' from users.user_qq = scores.user_qq and game.gno= scores.gno
连接查询分为内连接和外连接两种
内连接特点:相连接的两张表地位平等
如果一张表中在另一张表中不存在对应数据,则不做连接
from 子句后面直接出现多个表名,这种连接方式即属于内连接,是隐式内连接
显示内连接格式:select col_list from table1[inner] join table2 on table1.col=table2.clo1
例:查询分数信息,显示玩家昵称,游戏名称和分数
select user_name as '昵称', g_name as '游戏名称', score as '分数' from games inner join scores on games.gno =scores.gno
inner join users on score.user_qq=user.user_qq
例:查询每个玩家的昵称,总分和平均分
select user_name as '昵称',sum(score) as '总分',avg(score) as '平均分' from users U inner join scores S on S.user_qq = U.user_qq group by U.user_qq,user_name
例:查询平均分数大于3500的分数信息,显示玩家昵称,总分数,平均分数,并按照平均分数降序排列
select user_name as '昵称',sum(score) as '总分',avg(score) as '平均分' from users U inner join scores S on S.user_qq = U.user_qq group by U.user_qq,user_name having avg(score)>3500 order by avg(score) desc
外连接分为左连接和右外连接
外连接特点:做连接的两个表地位不平等,其中有一张的基础表
基础表中的每条数据必须出现,即使另一张表中没有数据与之匹配,也要用NULL补齐
左外连接时左表是基础表,右表外连接时右表是基础表
语句中先出现的表为'左表', 后出现的表为'右表'
外连接格式: SELECT COL_LIST FROM TABLE1 LEFT/RIGHT[OUTER] JOIN TABLE2 ON TABLE1.COL=TABLE2.COL
例:查询所有玩家关于5号游戏的分数信息
select user_name as'昵称' gno as '游戏编号', score as '分数' from users U left join scores S on U.user_qq=S.user_qq and S.gno=5
MySQL数据库— 汇总和分组数据的更多相关文章
- .net连mysql数据库汇总
另外MySql官方出了一个在csharp里面连接MySql的Connector,可以试试 http://dev.mysql.com/downloads/#connector-net <add n ...
- MySQL数据库汇总
-- mysql的最大连接数:默认为 100 -- mysql的增删改查 -- mysql统计各个字段(case when 用法 注:也可以使用其他的) select (case when ...
- MySQL数据库7 - 汇总和分组数据
一 汇总和分组数据 查询语句 ---> 结果集(多条数据) ---> 聚合函数 ----> 单行记录 1.常用的聚合函数: sum() 数字 ...
- Shell脚本使用汇总整理——mysql数据库5.7.8以前备份脚本
Shell脚本使用汇总整理——mysql数据库5.7.8以前备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/92234 ...
- Shell脚本使用汇总整理——mysql数据库5.7.8以后备份脚本
Shell脚本使用汇总整理——mysql数据库5.7.8以后备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/92234 ...
- Linux上通过MySQL命令访问MySQL数据库时常见问题汇总
Linux上通过mysql命令访问MySQL数据库时常见问题汇总 1)创建登录账号 #创建用户并授权 #允许本地访问 create user 'test'@'localhost' identified ...
- MySQL 数据库备份种类以及常用备份工具汇总
1,数据库备份种类 按照数据库大小备份,有四种类型,分别应用于不同场合,下面简要介绍一下: 1.1完全备份 这是大多数人常用的方式,它可以备份整个数据库,包含用户表.系统表.索引.视图和存储过程等所有 ...
- mysql自身报错、java、reids连接mysql数据库报错汇总
1.Can't connect to local MySQL server through socket 'tmpmysql.sock' (2) 原因是mysql根本没有启动 2.Access den ...
- MySql数据库知识点
关系型数据库管理系统简介 为什么使用数据库 1.降低存储数据的冗余度 2.更高的数据一致性 3.存储的数据可以共享 4.可以建立数据库所遵循的标准 5.便于维护数据完整性 6.能够实现数据的安全性 数 ...
随机推荐
- Oracle数据库中的重要对象
数据库中的重要对象:表.视图.序列.函数.存储过程.索引.同义词1.表:用PL/SQL Developer 软件打开 Scott的DEPT表查看SQL,可以看见DEPT表创建的脚本-- Create ...
- jqueryEasyUI列表
背景 因为学习大数据开发这段时间,同时也学习java的一些知识.利用了近五个月的时间来投入学习,当然我选择了一个机构,因为已经做了四年多的开发,所以即使不是做的java但是java还是了解的,这段时间 ...
- 如何删除 SQL Server 表中的重复行
第一种:有主键的重复行,就是说主键不重复,但是记录的内容重复比如人员表tab ,主键列id,身份证编号idcard当身份证重复的时候,保留最小id值的记录,其他删除delete a from tab ...
- easyui点击搜索的时候获取不要文本框里面的值的问题
jsp的代码 <div id="tb"> <input id="AppID" placeholder="请根据申请人ID搜索&quo ...
- CJOJ 2485 UVa 11991 生日礼物 / UVa 11991 Easy Problem from Rujia Liu?
CJOJ 2485 UVa 11991 生日礼物 / UVa 11991 Easy Problem from Rujia Liu? Description (原题来自刘汝佳<训练指南>Pa ...
- 7个原因告诉你为什么要选择一个“多模型”的数据库?-ArangoDB
ArangoDB 是一个开源的分布式原生多模型数据库 (Apache 2 license). 其理念是:利用一个引擎,一个 query 语法,一项数据库技术,以及多个数据模型,来最大力度满足项目的灵活 ...
- github 项目管理
一.在GitHub上创建项目 1. 打开浏览器 在地址栏输入地址:github.com 填写用户名.邮箱.密码 点击Sign up即可简单地注册 2. 完成注册,进入github平台, 点击new r ...
- ActiveMQ结合WebScoket应用例子以及介绍
一.ActiveMQ的介绍? 1.JMS基础概念 JMS(java Message Service) 即使java消息服务,它提供标准的产生.发送.接收的接口简化企业应用开发,它支持两种消息通信模型: ...
- Go语言string,int,int64 ,float转换
(1)int转string s := strconv.Itoa(i)等价于s := strconv.FormatInt(int64(i), 10) (2)int64转string i := int64 ...
- .Net 调用微信公众号扫一扫
1.绑定域名 去微信公众号平台中设置js接口安全域名,要注意的是不填写http://, 只填写域名即可,如 www.baidu.com. 一个月只能修改三次,要谨慎填写. 2.引入JS文件 在页面中引 ...