zoukankan      html  css  js  c++  java
  • 查询:排序Order by、聚合函数、分组groupby

    排序Order by

    order by 字段 asc/desc

           -- asc从小到大排列,即升序

           -- desc从大到小排序,即降序

           -- 查询年龄在18到34岁之间的男性,按照年龄从小到到排序

           select * from students where (age between 18 and 34) and gender=1;

           select * from students where (age between 18 and 34) and gender=1 order by age;

           select * from students where (age between 18 and 34) and gender=1 order by age asc;

           -- 查询年龄在18到34岁之间的女性,身高从高到矮排序

           select * from students where (age between 18 and 34) and gender=2 order by height desc;

          

    order by 字段 asc/desc,字段 asc/desc……

           -- 查询年龄在18到34岁之间的女性,身高从高到矮排序, 如果身高相同的情况下按照年龄从小到大排序

           select * from students where (age between 18 and 34) and gender=2 order by height desc,age desc;

           -- 查询年龄在18到34岁之间的女性,身高从高到矮排序, 如果身高相同的情况下按照年龄从小到大排序,

           -- 如果年龄也相同那么按照id从大到小排序

           select * from students where (age between 18 and 34) and gender=2 order by height desc,age asc,id desc;

          

           -- 按照年龄从小到大、身高从高到矮的排序

           select * from students order by age asc, height desc;

    聚合函数

    count (查询行数)

           -- 查询男性有多少人,女性有多少人

           select * from students where gender=1;

           select count(*) from students where gender=1;

           select count(*) as 男性人数 from students where gender=1;

           select count(*) as 女性人数 from students where gender=2;

    最大值

           -- max

           -- 查询最大的年龄

           select age from students;

           select max(age) from students;

           -- 查询女性的最高 身高

           select max(height) from students where gender=2;

    最小值

           -- min

          

    求和

           -- sum

           -- 计算所有人的年龄总和

           select sum(age) from students;

    平均值

           -- avg

           -- 计算平均年龄

           select avg(age) from students;

           -- 计算平均年龄 sum(age)/count(*)

           select sum(age)/count(*) from students;

    round

           -- 四舍五入 round(123.23 , 1) 保留1位小数

           -- 计算所有人的平均年龄,保留2位小数

           select round(sum(age)/count(*), 2) from students;

           select round(sum(age)/count(*), 3) from students;

           -- 计算男性的平均身高 保留2位小数

           select round(avg(height), 2) from students where gender=1;

           -- select name, round(avg(height), 2) from students where gender=1;

    分组group by

    l  group by

           -- 按照性别分组,查询所有的性别

           select name from students group by gender;

           select * from students group by gender;

           select gender from students group by gender;

           -- 计算每种性别中的人数

           select gender,count(*) from students group by gender;

           -- 计算男性的人数

           select gender,count(*) from students where gender=1 group by gender;

    l  group_concat(...)

    完整的语法如下:

    group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

    select * from aa;

    +------+------+

    | id| name |

    +------+------+

    | 1 | 10|

    | 1 | 20|

    | 1 | 20|

    | 2 | 20|

    | 3 | 200 |

    | 3 | 500 |

    +------+------+

    以id分组,把name字段的值打印在一行,逗号分隔(默认)

    mysql> select id, group_concat(name) from aa group by id;

    以id分组,把name字段的值打印在一行,分号分隔

    mysql> select id, group_concat(name separator ';') from aa group by id;

     +------+----------------------------------+

     | id| group_concat(name separator ';') |

     +------+----------------------------------+

     |1 | 10;20;20 |

     |2 | 20|

     |3 | 200;500 |

     +------+----------------------------------+

    以id分组,把去冗余的name字段的值打印在一行, 逗号分隔

    mysql> select id, group_concat(distinct name) from aa group by id;

     +------+-----------------------------+

     | id| group_concat(distinct name) |

     +------+-----------------------------+

     |1 | 10,20|

     |2 | 20 |

     |3 | 200,500 |

     +------+-----------------------------+

    以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序

     mysql> select id, group_concat(name order by name desc) from aa group by id;

    >>> 

     +------+---------------------------------------+

     | id| group_concat(name order by name desc) |

     +------+---------------------------------------+

     |1 | 20,20,10 |

     |2 | 20|

     |3 | 500,200|

     +------+---------------------------------------+ 

  • 相关阅读:
    MySql 踩坑小记
    Redux 实现过程的推演
    正则表达式的一些探索(偏JavaScript)
    [python工具] 如何使用plotly制作散列图
    使用epoll实现一个udp server && client
    python 实现一个简单tcp epoll socket
    [原创]差分放大器阻抗匹配计算+阻抗计算小工具
    将博客搬至CSDN
    [转]谈NAND Flash的底层结构和解析
    [原创]Fashion汽车定位器拆解
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10037740.html
Copyright © 2011-2022 走看看