【sql高级】postgresql之窗口函数用法

1. 背景

窗口函数在在SQL中是非常有用的工具,特别是在需要对查询结果进行分析、排名、聚合或者对结果进行一些特定的计算时。以下是一些常见的场景:

  1. 排名和分组:窗口函数可以轻松地对结果集进行排名、分组和分区。例如,你可以使用 ROW_NUMBER()、RANK()、DENSE_RANK() 等函数来为每一行分配一个排名值,而不需要对查询结果进行额外的子查询或者连接操作。

  2. 移动平均和累计求和:窗口函数可以用来计算移动平均、累计求和或者其他一些基于窗口的聚合函数。这种功能对于时间序列分析或者趋势分析非常有用。

  3. Top N 查询:通过使用窗口函数,你可以很容易地实现Top N查询,即获取每个分组或者分区中前N个值。这在很多业务场景下都是非常有用的,比如获取每个类别的前几名产品。

  4. 比较当前行和前/后行:有些情况下,你可能需要比较当前行和前一行或者后一行的数据。窗口函数可以帮助你实现这样的需求,比如计算当前行与上一行的差值或者比率等。

  5. 处理重叠区间:在处理时间区间或者其他类型的重叠区间时,窗口函数可以帮助你轻松地识别和处理这些重叠的区间。

  6. 执行复杂的聚合操作:有时候,你可能需要对聚合操作的结果进行更复杂的处理,比如计算每个分组内的平均值,然后将每个值与该分组内的所有值进行比较。窗口函数可以帮助你在不增加额外的查询复杂度的情况下实现这些功能。

2. 使用举例

dim.dim_mltt_trading_sequence_i表中有如下数据:

在这里插入图片描述
使用窗口函数 ROW_NUMBER() 可以对sequence_id、unit_id、center_id这三个字段相同的数据进行排序(按id排序)

使用的sql如下:

select
    t7.*,
    ROW_NUMBER() OVER (PARTITION BY t7.sequence_id,
        t7.unit_id, t7.center_id ORDER BY t7.id) as rn
from
        dim.dim_mltt_trading_sequence_i t7;

输出结果如下:

在这里插入图片描述

相关推荐

  1. SQL高级窗口函数

    2024-03-23 12:10:03       63 阅读
  2. 一些高级函数

    2024-03-23 12:10:03       27 阅读
  3. PostgreSQL 窗口函数汇总

    2024-03-23 12:10:03       33 阅读
  4. PostgreSQL高级sql积累

    2024-03-23 12:10:03       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-23 12:10:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-23 12:10:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-23 12:10:03       82 阅读
  4. Python语言-面向对象

    2024-03-23 12:10:03       91 阅读

热门阅读

  1. vue中如何用一个数组减去另一个数组

    2024-03-23 12:10:03       38 阅读
  2. node和npm yarn包管理工具

    2024-03-23 12:10:03       34 阅读
  3. npm 常用命令详解

    2024-03-23 12:10:03       43 阅读
  4. SAP-FI配置与业务解析之代发(客户)销售作业

    2024-03-23 12:10:03       40 阅读
  5. 将uint8_t数组转成uint32_t

    2024-03-23 12:10:03       46 阅读
  6. C++继承

    2024-03-23 12:10:03       40 阅读
  7. html5&css&js代码 038 列表

    2024-03-23 12:10:03       44 阅读
  8. Ubuntu下轻松搭建Wordpress:舞动Docker的魔法

    2024-03-23 12:10:03       37 阅读
  9. 25.2 微服务Dubbo

    2024-03-23 12:10:03       40 阅读
  10. 富格林:增强防范杜绝虚假暗箱

    2024-03-23 12:10:03       41 阅读
  11. InnoDB存储引擎的工作原理

    2024-03-23 12:10:03       42 阅读