美文网首页
为聚合结果指定条件

为聚合结果指定条件

作者: susupp | 来源:发表于2018-07-23 11:56 被阅读0次

使用COUNT函数等对表中数据进行汇总操作时,为其指定条件的不是 WHERE 子句,而是 HAVING 子句。
聚合函数可以在SELECT子句、HAVING子句和ORDER BY子句中使用。
HAVING子句要写在GROUP BY子句之后。
WHERE 子句用来指定数据行的条件,HAVING 子句用来指定分组的条件。

HAVING从GROUP BY的分组中筛选合适分组
SELECT
    product_type,
    COUNT(*)
FROM
    Product
GROUP BY
    product_type;

SELECT
    product_type,
    count(*)
FROM
    product
GROUP BY
    product_type
HAVING
    count(*) = 2;
HAVING和WHERE都可以的场景
SELECT
    product_type,
    COUNT(*)
FROM
    Product
WHERE
    product_type = '衣服'
GROUP BY
    product_type;

SELECT
    product_type,
    COUNT(*)
FROM
    Product
GROUP BY
    product_type
HAVING
    product_type = '衣服';

虽然这里HAVING和WHERE都能满足筛选条件,但是最好使用WHERE。关于使用HAVING还是WHERE可以这样考虑:

  • WHERE字句 = 指定行所对应的条件
  • HAVING字句= 指定组所对应的条件

再者,通常情况下,将条件写在WHERE字句中要比写在HAVING字句中的处理速度要快,返回结果所需的时间更短。粗粗的想一想,可以这样假设,在真正执行的时候,先执行WHERE,再执行GROUP BY,最后执行HAVING。那么WHERE筛选过后再进行GROUP BY,处理的数据量少了,当然分组更快。而HAVING则要在分组完成后,从分组完成后的子表进行选择。
果然如此。
另外,WHERE的另一个优势是,可以对WHERE字句指定条件所对应的列创建索引,这样也可以大幅提高处理速度。

相关文章

  • 为聚合结果指定条件

    使用COUNT函数等对表中数据进行汇总操作时,为其指定条件的不是 WHERE 子句,而是 HAVING 子句。聚合...

  • MySQL HAVING用法

    为聚合结果指定条件 如果想要从 GROUP BY 分组中进行筛选的话,不是用 WHERE 而是使用 HAVING ...

  • 2、elasticsearch聚合条件

    聚合可以获取搜获结果中的元信息 结果如下 也可以聚合复杂条件,比如求年龄平均值 请求结果 以下是使用聚合条件排序,...

  • 数据库之having子句

    作用 为group by分组指定条件,筛选出想要的分组。而where是筛选出想要的行。 书写顺序 聚合健所对应的条...

  • spring data mongoDB 复杂聚合条件查询--使用

    关键 表的数据结构为: 聚合的条件为:分组聚合后需要计算clickCost

  • JavaScript if 条件语句

    if 语句 当指定条件为true的时候,执行该条件的代码,然后接着执行 if 后面的其他语句。返回结果为false...

  • Excel学习第八天之逻辑函数基础

    今天学习逻辑函数基础知识 1.使用IF函数根据指定条件返回不同的结果 在遇到因指定的条件不同而需要返回不同结果的计...

  • Go 语言条件语句

    条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 fa...

  • Swift 条件语句

    条件语句通过设定的一个或多个条件来执行程序,在条件为真时执行指定的语句,在条件为 false 时执行另外指定的语句...

  • Swift 条件语句

    条件语句通过设定的一个或多个条件来执行程序,在条件为真时执行指定的语句,在条件为 false 时执行另外指定的语句...

网友评论

      本文标题:为聚合结果指定条件

      本文链接:https://www.haomeiwen.com/subject/uugdmftx.html