09 SQL进阶 -- SQL高级处理 -- 窗口函数等

在这里插入图片描述

1. 窗口函数

1.1 窗口函数概念及基本的使用方法

窗口函数也称为 OLAP 函数。OLAP 是 OnLine AnalyticalProcessing 的简称,意思是对数据库数据进行实时分析处理

为了便于理解,称之为窗口函数。常规的 SELECT 语句都是对整张表进行查询,而窗口函数可以让我们有选择的去某一部分数据进行汇总、计算和排序。

窗口函数的通用形式:

<窗口函数> OVER ([PARTITION BY <列名>]
ORDER BY <排序用列名>)

[] 中的内容可以省略。

窗口函数最关键的是搞明白关键字 PARTITION BY 和 ORDER BY 的作用。

PARTITION BY 是用来分组,即选择要看哪个窗口,类似于GROUP BY 子句的分组功能,但是PARTITION BY 子句并不具备GROUP BY 子句的汇总功能,并不会改变原始表中记录的行数。

ORDER BY 是用来排序,即决定窗口内,是按那种规则(字段)来排序的。

举个例子:

SELECT product_name
,product_type
,sale_price
,RANK() OVER (PARTITION BY product_type
ORDER BY sale_price) AS ranking
FROM product;

在这里插入图片描述

我们先忽略生成的新列 - [ranking], 看下原始数据在PARTITION BY 和 ORDER BY 关键字的作用下发生了什么变化。

PARTITION BY 能够设定窗口对象范围。本例中,为了按照商品种类进行排序,我们指定了 product type。即一个商品种类就是一个小的“窗口”。

ORDER BY 能够指定按照哪一列、何种顺序进行排序。为了按照销售单价的升序进行排列,我们指定了sale_price。此外,

上一篇:一堆喷儿香喷儿香的工具网站-已经收藏-搜嗖工具箱!


下一篇:PHP中常见的@注释的含义