博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql数据库优化课程---10、mysql数据库分组聚合
阅读量:6122 次
发布时间:2019-06-21

本文共 3909 字,大约阅读时间需要 13 分钟。

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;

 

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;

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

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

统计每个班的总人数:

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(*):concat(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 |
+-------+---------+---------+----------+---------+---------+

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/9806022.html

你可能感兴趣的文章
LeetCode 404 Sum of Left Leaves
查看>>
醋泡大蒜有什么功效
查看>>
hdu 5115(2014北京—dp)
查看>>
数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)...
查看>>
PHP读取日志里数据方法理解
查看>>
第五十七篇、AVAssetReader和AVAssetWrite 对视频进行编码
查看>>
Vivado增量式编译
查看>>
一个很好的幻灯片效果的jquery插件--kinMaxShow
查看>>
微信支付签名配置正确,但返回-1,调不出支付界面(有的手机能调起,有的不能)...
查看>>
第二周例行报告
查看>>
多线程条件
查看>>
黄聪:VMware安装Ubuntu10.10【图解】转
查看>>
Centos 6.x 升级openssh版本
查看>>
公式推♂倒题
查看>>
vue实现点击展开,点击收起
查看>>
如何使frame能居中显示
查看>>
第k小数
查看>>
构建之法阅读笔记三
查看>>
写给对前途迷茫的朋友:五句话定会改变你的人生
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>