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

     
  • 相关阅读:
    1775. [国家集训队2010]小Z的袜子
    面试经典-分金条
    你的话信用度太低,说出来就像喝水一样容易
    uvalive 3971
    lua学习:使用Lua处理游戏数据
    每一次量体重。轻了就对自己说:瘦了。重了就对自己说: 胸部大了
    啊华北哦好咕~~(╯﹏╰)b
    啊别怪我好
    阿尔宾观海卫哦
    面试经典--两个房间 每间房间三盏灯
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9806022.html
Copyright © 2011-2022 走看看