Postgresql
如果我已經有正確排序的查詢,我是否需要在視窗中使用 ORDER BY?
在這個查詢中..
SELECT * FROM foo ORDER BY x;
視窗函式是否
foo
需要特定的ORDER BY
子句或者視窗是否共享查詢的順序?
是的
您實際上可以在不查看規範的情況下看到這一點。
CREATE TABLE foo AS SELECT trunc(random()*10) AS x FROM generate_series(1,100);
和
SELECT row_number() OVER (), x FROM foo ORDER BY x; row_number | x ------------+--- 95 | 0 93 | 0 75 | 0 74 | 0 21 | 0 55 | 0 97 | 0 54 | 0 26 | 0 5 | 0
與有序分區上的視窗函式相比
SELECT row_number() OVER (ORDER BY x), x FROM foo; row_number | x ------------+--- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0