mysql数据库优化课程---10、mysql数据库分组聚合

一、总结

一句话总结:select concat(class,' 班') 班级,concat(count(*),' 人') 人数 from user group by class;

select class,max(id),min(id),count(*),sum(id),avg(id) from user group by class;

count(*)
group by class

1、为什么操作系统要选择linux?

很多开源产品

a、开源产品或者不开源产品的第一版都是linux,windows做不到

b、没有界面的黑屏系统能够极大的节约资源,windows开机就占了1-2g的内存,windows内存释放有问题,你电脑开机几天就要重启,服务器的话也是开了几天就卡了,linux就不会,linux的回收机制还是比较强大的

c、因为linux开源,旗下的很多开源的产品,而且这些开源的产品最开始的版本也是在linux下的,甚至很多都不会发布windows版本

2、mysql随机数函数怎么使用?

order by rand()

3、mysql如何从一个表中随机取一条数据?

order by rand() limit 1

select * from user order by rand() limit 1;

4、mysql统计函数的两种方法?

count(*)
count(id)

select count(*) from user;
select count(id) from user;

5、分组聚合怎么使用?

group by class字段

按照班级的字段进行分组‘

在分组的情况下,聚合是聚合的分组的数据

统计每个班的总人数:
mysql> select concat(class,' 班') 班级,concat(count(*),' 人') 人数 from user group by class;

user表数据:
+----+----------+----------+-------+
| id | username | password | class |
+----+----------+----------+-------+
|  1 | user1    | 123      |     1 |
|  2 | user2    | 123      |     1 |
|  3 | user3    | 123      |     1 |
|  4 | user4    | 123      |     2 |
|  5 | user5    | 123      |     1 |
|  6 | user6    | 123      |     3 |
|  7 | user7    | 123      |     2 |
|  8 | user8    | 123      |     1 |
|  9 | user9    | 123      |     3 |
| 10 | user10   | 123      |     1 |
+----+----------+----------+-------+

group by分组聚合的使用:
#按条件进行分组,然后在分组的基础上进行有条件的聚合.

把每个班的第一个人取出来:
mysql> select * from user group by class;
+----+----------+----------+-------+
| id | username | password | class |
+----+----------+----------+-------+
|  1 | user1    | 123      |     1 |
|  4 | user4    | 123      |     2 |
|  6 | user6    | 123      |     3 |
+----+----------+----------+-------+

统计每个班的总人数:
mysql> select concat(class,' 班') 班级,concat(count(*),' 人') 人数 from user group by class;
+--------+--------+
| 班级   | 人数   |
+--------+--------+
| 1 班   | 6 人   |
| 2 班   | 2 人   |
| 3 班   | 2 人   |
+--------+--------+

6、统计每个班的总人数?

count(*)
group by class

select concat(class,' 班') 班级,concat(count(*),' 人') 人数 from user group by class;
+--------+--------+
| 班级   | 人数   |
+--------+--------+
| 1 班   | 6 人   |
| 2 班   | 2 人   |
| 3 班   | 2 人   |
+--------+--------+

二、内容在总结中

随机数rand函数:
select * from user order by rand() limit 1;

统计个数count函数:
#统计表总行数:
select count(*) from user;
select count(id) from user;

#统计符合条件的行数:
select count(*) from user where id>2;

求和sum():
select sum(id) from user;

平均值avg():
select avg(id) from user;

最大值max():
select max(id) from  user;

最小值min():
select min(id) from  user;

user表数据:
+----+----------+----------+-------+
| id | username | password | class |
+----+----------+----------+-------+
|  1 | user1    | 123      |     1 |
|  2 | user2    | 123      |     1 |
|  3 | user3    | 123      |     1 |
|  4 | user4    | 123      |     2 |
|  5 | user5    | 123      |     1 |
|  6 | user6    | 123      |     3 |
|  7 | user7    | 123      |     2 |
|  8 | user8    | 123      |     1 |
|  9 | user9    | 123      |     3 |
| 10 | user10   | 123      |     1 |
+----+----------+----------+-------+

group by分组聚合的使用:
#按条件进行分组,然后在分组的基础上进行有条件的聚合.

把每个班的第一个人取出来:
mysql> select * from user group by class;
+----+----------+----------+-------+
| id | username | password | class |
+----+----------+----------+-------+
|  1 | user1    | 123      |     1 |
|  4 | user4    | 123      |     2 |
|  6 | user6    | 123      |     3 |
+----+----------+----------+-------+

统计每个班的总人数:
mysql> select concat(class,' 班') 班级,concat(count(*),' 人') 人数 from user group by class;
+--------+--------+
| 班级   | 人数   |
+--------+--------+
| 1 班   | 6 人   |
| 2 班   | 2 人   |
| 3 班   | 2 人   |
+--------+--------+

补充:
-----------------------------------------------
分组聚合:
select class,max(id),min(id),count(*),sum(id),avg(id) from user group by class;
+-------+---------+---------+----------+---------+---------+
| class | max(id) | min(id) | count(*) | sum(id) | avg(id) |
+-------+---------+---------+----------+---------+---------+
|     1 |      10 |       1 |        6 |      29 |  4.8333 |
|     2 |       7 |       4 |        2 |      11 |  5.5000 |
|     3 |       9 |       6 |        2 |      15 |  7.5000 |
+-------+---------+---------+----------+---------+---------+

 

mysql数据库优化课程---10、mysql数据库分组聚合的更多相关文章

  1. mysql数据库优化课程---3、数据库设计是什么

    mysql数据库优化课程---3.数据库设计是什么 一.总结 一句话总结: 就是设计各个字段及各个字段类型 1.char,varchar,text同存'ABC'的存储空间为多少? char(255): ...

  2. mysql数据库优化课程---1、数据库的本质是什么

    mysql数据库优化课程---1.数据库的本质是什么 一.总结 一句话总结: 文件夹-文件:一个数据库其实就是一个的文件夹,数据库里面的表就是文件夹里的一个或者多个文件(根据数据库引擎不同而不同,My ...

  3. mysql数据库优化课程---9、php用什么写的

    mysql数据库优化课程---9.php用什么写的 一.总结 一句话总结:php是用c语言写的,所以php里面的那些模块什么都是c语言 c 1.php用什么写的? c php是用c语言写的,所以php ...

  4. mysql数据库优化课程---16、mysql慢查询和优化表空间

    mysql数据库优化课程---16.mysql慢查询和优化表空间 一.总结 一句话总结: a.慢查询的话找到存储慢查询的那个日志文件 b.优化表空间的话可以用optimize table sales; ...

  5. mysql数据库优化课程---15、mysql优化步骤

    mysql数据库优化课程---15.mysql优化步骤 一.总结 一句话总结:索引优化最立竿见影 1.mysql中最常用最立竿见影的优化是什么? 索引优化 索引优化,不然有多少行要扫描多少次,1亿行大 ...

  6. mysql数据库优化课程---14、常用的sql技巧

    mysql数据库优化课程---14.常用的sql技巧 一.总结 一句话总结:其实就是sql中那些函数的使用 1.mysql中函数如何使用? 选择字段 其实就是作用域select的选择字段 3.转大写: ...

  7. mysql数据库优化课程---13、mysql基础操作

    mysql数据库优化课程---13.mysql基础操作 一.总结 一句话总结:mysql复制表,索引,视图 1.mysql如何复制表? like select * 1.复制表结构 create tab ...

  8. mysql数据库优化课程---12、mysql嵌套和链接查询

    mysql数据库优化课程---12.mysql嵌套和链接查询 一.总结 一句话总结:查询user表中存在的所有班级的信息? in distinct mysql> select * from cl ...

  9. mysql数据库优化课程---11、mysql普通多表查询

    mysql数据库优化课程---11.mysql普通多表查询 一.总结 一句话总结:select user.username,user.age,class.name,class.ctime from u ...

随机推荐

  1. 将Android studio的工程导入到eclipse中

    自从Android Studio(后面称AS)推出后,越来越多的项目都使用AS开发. AS往eclipse迁移的方法: 其实很简单,代码都是一样的,从AS工程中找到与Eclipse工程对应的文件,放到 ...

  2. json的相关操作

    最近对json的操作不是很理解 定义: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 它基于 ECMAScript (w3c制定的j ...

  3. java jacob调用打印,word,excel横向打印

    public static boolean printOfficeFile(File f) { if (f != null && f.exists()) { String fileNa ...

  4. QT Creator常用快捷键

    1.F10,F11 单步调试 2.Ctrl + / :注释/取消注释选定内容. 3.F4 :在 头文件(.h) 和 实现文件(.cpp) 之间进行切换. 4.Ctrl + i :自动格式化选中代码. ...

  5. php foreach函数的用法

    php foreach函数用法举例.  Foreach 函数(PHP4/PHP5) foreach 语法结构提供了遍历数组的简单方式. foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类 ...

  6. 虚拟环境virtualenv和virtualenvwrapper(转)

    virtualenv是用来创建一个独立的Python虚拟环境的工具,通过virtualenv可以创建一个拥有独立的python版本和安装库的虚拟开发环境.这样一来我们就可以在虚拟环境中安装各种各种所需 ...

  7. JavaScript:隐藏Url中的参数

    <script type="text/javascript"> function submitForm(url, data) { var eleForm = docum ...

  8. python网络编程——SocketServer/Twisted/paramiko模块

    在之前博客C/S架构的网络编程中,IO多路复用是将多个IO操作复用到1个服务端进程中进行处理,即无论有多少个客户端进行连接请求,服务端始终只有1个进程对客户端进行响应,这样的好处是节省了系统开销(se ...

  9. C语言预处理命令之条件编译(#ifdef,#else,#endif,#if等)

    转自:http://www.kuqin.com/language/20090806/66164.html 预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器.可见预处理过程先于编译器 ...

  10. 字符数组(char)和字符串(string)的转换

    #include<iostream>#include<string>using namespace std;void main(){ string LyuS = "W ...