zoukankan      html  css  js  c++  java
  • mysql数据库优化课程---10、mysql数据库分组聚合

    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 |
    +-------+---------+---------+----------+---------+---------+

     
  • 相关阅读:
    八、UIViewController们之间的协作——Segue
    七、UIViewController导航栏
    六、APP开发的主角——UIViewController
    五、UI开发之核心基础——约束(深入)
    四、UI开发之核心基础——约束(实用)
    三、UI开发之核心基础——约束(入门)
    iOS开发笔记错误集
    Unity中内嵌网页插件UniWebView使用总结
    利用Aspose.Word控件实现Word文档的操作
    ReSharper 配置及用法(ZHUANG)
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9806022.html
Copyright © 2011-2022 走看看