验证DISTINCT与LAG窗口函数跨RDBMS的结果一致性
LAG()窗口函数跨RDBMS的输出一致性示例
先创建一张用于测试的表:
CREATE TABLE tab AS SELECT 1 AS t, 'G' AS company, 40 AS quote UNION SELECT 2 , 'G', 60 UNION SELECT 3 , 'S', 60 UNION SELECT 4, 'S', 20;
接着执行包含LAG()窗口函数的查询——这个函数的作用是在按company分区、按t排序的结果集中,获取当前行的上一行quote值:
SELECT DISTINCT company, quote, LAG(quote) OVER(PARTITION BY company ORDER BY t) FROM tab;
需要说明的是,这个查询的输出结果在各类主流关系型数据库管理系统(RDBMS)中都是完全一致的,具体结果如下:
| company | quote | lag |
|---|---|---|
| G | 40 | null |
| S | 60 | null |
| G | 60 | 40 |
| S | 20 | 60 |
内容的提问来源于stack exchange,提问作者Lukasz Szozda
相关产品推荐
相关产品推荐

