是否有使用OVER(ORDER BY <PARTITION BY> )语法的Sql Server 函数系列的正式/学术名称,如 ROW_NUMBER()、LAG、LEAD、RANK 等?ansi标准涵盖了多少?
我可以在 MSDN 上看到其中一些被列为分析函数,而另一些则是排名函数。
我询问使用 Sql Server 名称,但我想知道的原因之一是帮助我找出如何将其中一些查询转换为其他数据库,并衡量这些数据库之间的支持。另一个原因是帮助我更完整地理解这个概念。我的大部分经验都早于他们使用 Sql Server 的时间,我发现最近我太习惯了旧的解决方法,因为这些功能之一可能很容易适应。知道如何引用它们将有助于我阅读其他内容。
我相信您正在寻找的术语是window functions. 大多数数据库都支持这些类型的功能。
窗口函数属于一种称为“设置函数”的函数,这意味着适用于一组行的函数。“窗口”一词用于指代函数处理的行集。
窗口函数被添加到由 ISO 管理的标准 SQL:2003 中,并在 SQL:2008 中进行了更详细的指定。一段时间以来,其他 DBMS,如 Oracle、Sybase 和 DB2 都支持窗口函数。即使是开源的 RDBMS PostgreSQL 也有完整的实现。到目前为止,SQL Server 只有部分实现,但它会在 SQL 2012 中实现。
窗口函数是以下之一: