美文网首页
聚合查询

聚合查询

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

通常,聚合函数会对NULL以外的对象进行汇总。但是只有COUNT函数例外,使用 COUNT(*)可以查出包含 NULL 在内的全部数据的行数。

SELECT
    count(*)
FROM
    product;
-- 返回8

SELECT
    count(purchase_price)
FROM
    product;
-- 返回6

SELECT
    COUNT(*),
    COUNT(col_1)
FROM
    NullTbl;
-- 返回3,0
这里很独特的是COUNT(*)返回所有行数,COUNT(col_1)的时候,返回的是不包含NULL的行的数量。

GROUP BY

SELECT
    product_type,
    count(*)
FROM
    product
GROUP BY
    product_type;

SELECT
    purchase_price,
    -- 这个也会返回NULL的个数
    count(*)
FROM
    product
GROUP BY
    purchase_price;

与聚合函数和GROUP BY子句有关的常见错误

常见错误1 ——在 SELECT 子句中书写了多余的列

使用聚合函数时,SELECT 子句中只能存在以下三种元素。

  • 常数
  • 聚合函数
  • GROUP BY子句中指定的列名(也就是聚合键)
常见错误2 ——在GROUP BY子句中写了列的别名
SELECT product_type AS pt, COUNT(*) FROM Product
GROUP BY pt;

上述语句发生错误的原因之前已经介绍过了,是 SQL 语句在 DBMS 内部的执行顺序造成的——SELECT子句在GROUP BY子句之后执行。 在执行GROUP BY子句时,SELECT子句中定义的别名,DBMS还并不知道。

常见错误3 —— GROUP BY子句的结果能排序吗

GROUP BY 子句结果的显示是无序的。

常见错误4 ——在 WHERE 子句中使用聚合函数
SELECT product_type, COUNT(*) FROM Product
WHERE COUNT(*) = 2 GROUP BY product_type;

实际上,只有 SELECT 子句和 HAVING 子句(以及之后将要学到的 ORDER BY子句)中能够使用COUNT等聚合函数。并且,HAVING子 句可以非常方便地实现上述要求。

相关文章

  • ElasticSearch 7.x 聚合查询

    聚合查询 |ES 的聚合查询和MyQL的聚合查询类型,ES 的聚合查询相比MySQL 要强大的多,ES提供的统计数...

  • es7.x(10)aggs聚合查询

    ES聚合查询流程 核心概念2.1 桶2.2 指标 ES聚合查询的语法3.1 聚合查询的size语法 指标聚合4.1...

  • MongoDB聚合查询

    本文为转载,原文:MongoDB聚合查询 聚合查询 MongoDB除了基本的查询功能之外,还提供了强大的聚合功能。...

  • mongoDB 2 聚合查询

    测试数据: 1. 基本总量查询 2. 聚合后的总量查询 3.多聚合的总量查询 4.聚合的多列总量查询

  • 05-Mysql数据库02

    mysql数据查询 条件查询 模糊查询 范围查询 判断空 排序 聚合函数 分组 分组要和聚合一起用 分页 连接查询...

  • sql查询总结

    查询有多少某个分类 聚合查询

  • ElasticSearch聚合查询

    ElasticSearch聚合查询

  • 【详细教程】一文参透MongoDB聚合查询

    MongoDB聚合查询 什么是聚合查询 聚合操作主要用于处理数据并返回计算结果。聚合操作将来自多个文档的值组合在一...

  • 聚合查询

    通常,聚合函数会对NULL以外的对象进行汇总。但是只有COUNT函数例外,使用 COUNT(*)可以查出包含 NU...

  • 聚合查询

    db.message.aggregate([ {$match:{"列":"值"}}, {$group:{_id:"...

网友评论

      本文标题:聚合查询

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