【发布时间】:2017-11-30 10:59:40
【问题描述】:
当使用带有范围的窗口框架子句时,我们定义了我们聚合的窗口的起点和终点。如果我们按具有多行的值排序,则处理的实际行是不确定的,并且将在该集合中的某个位置。那么在这种情况下,结果是否也会包括与当前行具有相同值的所有行?
https://my.vertica.com/docs/8.1.x/HTML/index.htm#Authoring/AnalyzingData/SQLAnalytics/WindowFraming.htm 没有明确提及这一点,但似乎暗示它是实际的非确定性行。
所以如果我有下表 t:
| ts | x |
|------------------ |--- |
| 2017-11-29 10:00 | 1 |
| 2017-11-30 10:00 | 2 |
| 2017-11-30 11:00 | 3 |
| 2017-12-01 11:00 | 4 |
以及以下查询:
with results as (
select
sum(x) over (order by ts::date range between current row and unbounded following) as r
from t
)
select r from results where ts = '2017-11-30 11:00'
它会说 9 (2+3+4) 还是说 9 或 7,这取决于订购的方式?
如何在我的窗口中也包含所有具有相同值的项目?
【问题讨论】: