博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第21课:聚集与分组的执行说明
阅读量:4076 次
发布时间:2019-05-25

本文共 717 字,大约阅读时间需要 2 分钟。

PostgreSQL 中除了 SPJ(SELECT、PROJECT、JOIN) 之外,还有大量的聚合和分组操作,比如下面示例中的语句,其中有聚集操作 avg(a) 和分组操作 GROUP BY b。顾名思义,聚集操作就是一个合并的过程,而分组操作则是对数据的归类。

postgres=# EXPLAIN SELECT avg(a) FROM TEST_A GROUP BY b;                          QUERY PLAN-------------------------------------------------------------- HashAggregate  (cost=2.50..3.75 rows=100 width=36)   Group Key: b   ->  Seq Scan on test_a  (cost=0.00..2.00 rows=100 width=8)(3 rows)

简单的聚集操作

简单来说,聚集操作分成 3 个步骤。

  • 初始阶段:初始化一个初值,比如对于 avg 操作来说,它的初值是 0。
  • 中间阶段:向初值中不断累加值,并记载累加了多少条记录。比如要对 TEST_A.a 做 avg 聚集操作,就需要先把 TEST_A.a 中的所有列值累加起来,并且同时统计 TEST_A.a 中有多少条数据。
  • 结束阶段:对累加的数据做最后的处理,比如对 avg 聚集来说,在中间阶段已经累加了所有的值和数量,求平均值就只需要做一次除法就可以了。

这样看起来还是蛮容易的,如果我们自己去算一个平均数,也都是这样做的。但是 avg 是函数的形态,PostgreSQL 怎

转载地址:http://xayni.baihongyu.com/

你可能感兴趣的文章
Java NIO
查看>>
Java大数据:Hbase分布式存储入门
查看>>
大数据学习:Spark RDD操作入门
查看>>
大数据框架:Spark 生态实时流计算
查看>>
大数据入门:Hive和Hbase区别对比
查看>>
大数据入门:ZooKeeper工作原理
查看>>
大数据入门:Zookeeper结构体系
查看>>
大数据入门:Spark RDD基础概念
查看>>
大数据入门:SparkCore开发调优原则
查看>>
大数据入门:Java和Scala编程对比
查看>>
大数据入门:Scala函数式编程
查看>>
【数据结构周周练】002顺序表与链表
查看>>
C++报错:C4700:使用了非初始化的局部变量
查看>>
【数据结构周周练】003顺序栈与链栈
查看>>
C++类、结构体、函数、变量等命名规则详解
查看>>
C++ goto语句详解
查看>>
【数据结构周周练】008 二叉树的链式创建及测试
查看>>
《软件体系结构》 第九章 软件体系结构评估
查看>>
《软件体系结构》 第十章 软件产品线体系结构
查看>>
《软件过程管理》 第六章 软件过程的项目管理
查看>>