按不返回 运行 计数排序

order by not returning running count

在这个问题中 - - 我被告知“如果 window 子句同时包含 PARTITION BY 和 ORDER BY,它 returns 运行 计数在分区。因此,使用 ORDER BY 表达式,到目前为止在分区内已计算了多少行。"

参考这个例子 - https://www.vertica.com/docs/11.0.x/HTML/Content/Authoring/AnalyzingData/SQLAnalytics/ReportingAggregates.htm?tocpath=Analyzing%20Data%7CSQL%20Analytics%7CWindow%20Framing%7C_____3

为什么 sal=109 的所有值的累积计数都显示 4(计数的最后一个值)?

=> SELECT deptno, sal, empno, COUNT(sal)  OVER (
->   PARTITION BY deptno ORDER BY sal
-> ) AS COUNT 
-> FROM emp;
 deptno | sal | empno | count 
--------+-----+-------+-------
     10 | 101 |     1 |     1
     10 | 104 |     4 |     2
------------------------------
     20 | 100 |    11 |     1
     20 | 109 |     7 |     4<-
     20 | 109 |     6 |     4<-
     20 | 109 |     8 |     4<-
     20 | 110 |    10 |     6<-
     20 | 110 |     9 |     6<-
------------------------------
     30 | 102 |     2 |     1
     30 | 103 |     3 |     2
     30 | 105 |     5 |     3

您按 sal 排序,在 deptno 20 内有 3 行位于 109。对于排序标准,有 3 行应该同时出现。添加所有 3 个后,在 100 1 行之后,您立即在 4。因此您得到所有​​ 3 个 4

您需要不同的排序值才能获得不同的 运行 计数结果。