1. Having子句

    在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用,HAVING 子句可以让我们筛选分组后的各组数据。

    SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name
    HAVING aggregate_function(column_name) operator value;

    例:

    A表Websites

    id name url alexa country
    1 Google https://www.google.cm
    1 USA
    2 淘宝 https://www.taobao.com
    13 CN
    3 菜鸟教程 http://www.runoob.com 4689 CN
    4 微博 http://weibo.com 20 CN
    5 FaceBook https://www.facebook.com 3 USA

    B表access_log

    id site_id count date
    1 1 45 2016-05-10
    2 3 100 2016-05-13
    3 1 230 2016-05-14
    4 2 10 2016-05-14
    5 5 205 2016-05-14
    6 4 13 2016-05-15
    7 3 220 2016-05-15
    8 5 545 2016-05-16
    9 3 201 2016-05-17

    查找总访问量sum(count)>200,alexa排名小于30的网站。

    select Websites.name,sum(access_log.count) AS TotalVisits
    from Websites 
    INNER JOIN access_log
    ON Websites.id = access_log.site_id
    where Websites.alexa <30
    group by Websites.name
    having sum(access_log.count) >200