• where,group by, having order by


    使用说明:

    select 列x[,聚合函数] 
    from 表名 
    where 筛选条件 
    group by 列x(是select那里的列x) 
    having 过滤条件 
    order by 列名(或聚合函数,需要时select那里出现的) [desc | asc]
    

    执行顺序:

    1、 where返回符合条件的结果集
    2、 group by返回分类结果集
    3、 select返回选择后的结果集
    4、having返回符合条件的结果集
    5、 order by按照某种方式对某列进行排序

    至于为什么有了where只有还要有having?
    不仅是因为having的执行时间不同,更重要的是where后面不能跟聚合函数,我们待会再下面的例子里来细说。

    举个栗子:

    select name, sum(grade)
    from people
    where sex='男'
    group by name
    having sum(grade)>100
    order by sum(grade) desc
    

    首先,将people表中所有男性选择出来;
    然后将所有男性的元组按照姓名分好组;
    分好组后将name和sum(grade)计算好并投影出来;
    having必然是需要的,因为这个时候才知道sum(grade)的值,这时having就将上面那个投影出来的结果集中的sum(grade)>100的元组全部挑选出来;
    最后order by按照总成绩(即sum(grade))的大小由高到低将name和sum(grade)作为结果最终返回。

    参考资料:
    https://www.cnblogs.com/toward-the-sun/p/4041449.html

  • 相关阅读:
    URI 和 URL
    TCP/IP协议
    TCP/IP 通信传输流
    Python 之 函数可变参数和关键字参数
    Python 之装饰器decorator
    Python 之进程
    Android
    Redis持久化(persistence)
    python正则表达式
    selenium+python定位iframe元素
  • 原文地址:https://www.cnblogs.com/yinyoupoet/p/13287431.html
Copyright © 2020-2023  润新知