一 汇总和分组数据

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

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数据库7 - 汇总和分组数据的更多相关文章

  1. MySQL 数据库操作命令汇总

    此文全部都是基本的数据库语言 1.登陆到mysql >mysql -h hostname -u username -p 然后等待系统提示输入密码即可登陆.如果想在登陆的时候就选择好数据库,可以使 ...

  2. MySql数据库优化-汇总

    各位,不喜勿喷,和气生财- 数据库优化,是一种综合性的技术,不是通过某一种方式让数据库效率提高很多,而是通过各个方面的优化,来是数据库效率明显的稳步的提高. 主要包括以下: 1.库表的设计优化(三种范 ...

  3. MySQL数据库— 汇总和分组数据

    一 汇总和分组数据 查询语句 ---> 结果集(多条数据) ---> 聚合函数  ----> 单行记录 1.常用的聚合函数: sum()         数字             ...

  4. Shell脚本使用汇总整理——mysql数据库5.7.8以前备份脚本

    Shell脚本使用汇总整理——mysql数据库5.7.8以前备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/92234 ...

  5. Shell脚本使用汇总整理——mysql数据库5.7.8以后备份脚本

    Shell脚本使用汇总整理——mysql数据库5.7.8以后备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/92234 ...

  6. Linux上通过MySQL命令访问MySQL数据库时常见问题汇总

    Linux上通过mysql命令访问MySQL数据库时常见问题汇总 1)创建登录账号 #创建用户并授权 #允许本地访问 create user 'test'@'localhost' identified ...

  7. .net连mysql数据库汇总

    另外MySql官方出了一个在csharp里面连接MySql的Connector,可以试试 http://dev.mysql.com/downloads/#connector-net <add n ...

  8. MySQL 数据库备份种类以及常用备份工具汇总

    1,数据库备份种类 按照数据库大小备份,有四种类型,分别应用于不同场合,下面简要介绍一下: 1.1完全备份 这是大多数人常用的方式,它可以备份整个数据库,包含用户表.系统表.索引.视图和存储过程等所有 ...

  9. mysql自身报错、java、reids连接mysql数据库报错汇总

    1.Can't connect to local MySQL server through socket 'tmpmysql.sock' (2) 原因是mysql根本没有启动 2.Access den ...

随机推荐

  1. 【转】 C++的精髓——虚函数

    虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以不写基类中的函数! 纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数! 虚函数 引入原 ...

  2. examine self thrice a day2017

    1.6.2017 葰γí千萬丆γáò絠ィ壬菏鰯嚸,銣惈絠,倁噵ㄖㄅ者β淂簳掉.千澫丕楆被莂亽抓ィ主鰯點,以佌襲撃.那個記駐,吢軟劊嗐死尓垍己ㄖㄅ.絠仒槇可笑,鯟覀者βる誐手裏魢泾吺有談半リ的籌碼,還茬 ...

  3. gulp入门教程

    第1步:安装Node 首先,最基本也最重要的是,我们需要搭建node环境.访问 nodejs.org,下载完成后直接运行程序,就一切准备就绪.npm会随着安装包一起安装,稍后会用到它. 为了确保Nod ...

  4. python 学习2

    在1的基础上 settings.py blog/models.py: 打开一个cmd, net start mysql ,启动mysql服务 mysql -uroot -p 再在py_fir目录下打开 ...

  5. C++ 标准库string字符串的截取

    标准库的string有一个substr函数用来截取子字符串.一般使用时传入两个参数,第一个是开始的坐标(第一个字符是0),第二个是截取的长度. #include <iostream> #i ...

  6. sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding

    1 概述 这是基于开源的sphinx全文检索引擎的架构代码分析,本篇主要描述index索引服务的分析.当前分析的版本 sphinx-2.0.4 2 index 功能 3 文件表 4 索引文件结构 4. ...

  7. solr索引服务器的配置和solrj集成开发总结

    一.环境:solr6.2 + jdk1.8 + tomcat8   (solr不同版本需要最低的环境不同) solr6 需要至少jdk1.8   .对应的solr5+jdk1.7+tomcat7 实测 ...

  8. 打造最高效的科研环境之Emacs插件们

    0 盲人摸象 作为初学者,迫切的需求就是直接上手Emacs并打造包含自动补全命令在内的科研环境. 和网上众多的插件安装的教程相比,我认为找到一个与自己需求匹配的Emacs配置环境来得更方便. 本例中, ...

  9. ASCII、UNICODE、UTF-8等关系

    参考如下: 网址1:http://blog.csdn.net/lx697/article/details/5914417 网址2:http://www.php100.com/html/it/bianc ...

  10. nginx 配置ci ,tp

    #local ciserver {    listen       80;    server_name  ci.local;        root    E:/test/CodeIgniter/; ...