美文网首页
postgreql 窗口函数用法

postgreql 窗口函数用法

作者: 护念 | 来源:发表于2017-12-30 15:59 被阅读0次

认识窗口函数

在说窗口函数之前我们先来看一个问题:
假设我们有这样一张products表:


Snip20171230_1.png

我们想要同时取出产品的名称、售价,同时列出这件产品对应的商品类型的平均价格?
按照以前我们的子查询知识我们可以这样:

select name,
       price,
       (select avg(price) from products where type = p.type) as type_avg_price
from products p;
Snip20171230_2.png

很好!能够正确执行,但窗口函数有更好的办法(可以先分类再算平均价格)

select name,
       price,
       avg(price) over (partition by type) as type_avg_price
from products;

# partition by是按照什么分类的意思
Snip20171230_3.png

这也能很好的执行。

下面让我们把问题难度加大,我们需要同时取出商品名称、价格、然后按照商品的价格在自己的品类中去排序。
如果用普通的方法比较不好做了,但窗口函数有办法

select name,
       price,
       row_number() over (partition by type order by price) as postition
from products;

# row_number是postgresql中的排序函数
# 这里先分类,再排序
Snip20171230_4.png

窗口函数的语法

函数  OVER (<PARTITION BY column_name> <ORDER BY column_name>)

# 函数主要有两种:(sum avg min max)聚合函数、(rank、dense_rank、row_number)专用窗口函数
# partition by 和 order by 都是可以省略的

小结

  • 窗口函数的关键点在于,它可以先分类再做函数操作;
  • 对比于聚合函数,窗口函数具有聚合的同时保留其它列展示的功能,故称窗口。

相关文章

  • postgreql 窗口函数用法

    认识窗口函数 在说窗口函数之前我们先来看一个问题:假设我们有这样一张products表: 我们想要同时取出产品的名...

  • Postgresql窗口函数(二)

    在上一篇里,主要窗口函数的基本用法。 在这一篇中,我们来看看postgresql除了聚合函数之外还支持哪些窗口函数...

  • mysql窗口函数

    mysql官方说明 1.窗口函数的基本用法如下:window_name() over ([partition_de...

  • E战到底——求和函数(Sumif 、Sumifs )

    基本用法 快速条件求和:录入Sumif ——插入函数——弹出函数窗口——1判断区域(销售员)2条件区域(姓名)3求...

  • 数据分析课程笔记 - 14 - MySQL(三)

    大家好呀~ 今天继续学习 MySQL 的几个高阶用法:条件函数、表连接查询、子查询以及窗口函数。这些内容相对比较抽...

  • 21-10 进军函数

    一、函数基本知识 1.函数基本用法:加强只显示公式(ctrl+~)、选中公式引用的单元格(ctrl+【)、监视窗口...

  • Hive常用函数

    一、窗口函数 1、窗口函数基础结构 窗口函数 = 分析函数 + over函数分析函数:sum ( )、max ( ...

  • 窗口函数(OVER 子句)

    窗口函数简介 数据准备 问题描述 解答 窗口函数简介 窗口函数是 SQL 中一类特别的函数。 和聚合函数相似,窗口...

  • 高级函数_分析函数与窗口函数

    高级函数_分析函数与窗口函数 分析函数往往与窗口函数一起使用,over()为窗口函数 一、分析函数 1.01、排名...

  • Generator 函数的含义与用法

    Generator函数的含义与用法 Thunk函数的含义与用法 co函数库的含义与用法 async函数的含义与用法...

网友评论

      本文标题:postgreql 窗口函数用法

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