窗口函数与普通 SQL

Posted

技术标签:

【中文标题】窗口函数与普通 SQL【英文标题】:Window functions vs vanilla SQL 【发布时间】:2016-07-19 21:43:21 【问题描述】:

如果我们将窗口函数视为普通 SQL 的扩展,那么它们的优势是什么?

您能否执行“普通”SQL 无法执行的查询和操作?

【问题讨论】:

近二十年来,窗口函数一直是 ANSI SQL 的一部分。为什么你会认为它们是扩展?但是对您的问题的一个简单答案是它们更简洁,更快,并且扩展了基本 SQL 的功能。也许这就是为什么它们在标准中。 'extension' 被用作消除问题范围歧义的一种方式;如果您可以在不使用窗口函数的情况下获得相同的结果 【参考方案1】:

简单的答案是“是”,您可以做一些其他情况下不可能完成的事情——至少不能在单个查询中完成。

一个简单的例子是row_number(),您不能在没有唯一键的表上复制(在单次选择中)。

【讨论】:

如果使用具有二次复杂度的三角连接,在 使用 唯一键的表上复制 row_number 可能会非常低效。

以上是关于窗口函数与普通 SQL的主要内容,如果未能解决你的问题,请参考以下文章

SQL 窗口函数是什么?涨见识了!

SQL函数

Hive sql及窗口函数

SQL SEVER 开窗函数总结

SQL数据分析之窗口排序函数rankdense_rankraw_number与laglead窗口偏移函数用法整理

Flink SQL --- 窗口聚合