PSQL:ROW_NUMBER不断增加

问题描述 投票:0回答:1

你有以下表T1:

 field1 | field3
--------+--------
 A1     | foo
 A2     | v1
 A3     | v2
 A4     | bar

和T2:

 field2 | field3 
--------+--------
 B1     | foo 
 B2     | bar

如果我执行以下请求:

SELECT DISTINCT ON (T2.field2, T2.field3)
  T2.field2 AS F2,
  T2.field3 AS F3,
  ROW_NUMBER () OVER (ORDER BY T2.field3) AS F4
FROM T2
JOIN T1 ON T2.field3=T1.field3

...我得到以下结果:

F2:B1, F3:foo, F4:1
F2:B2, F3:bar, F4:4 // I would like F4:2

但我希望F4逐一增加...我认为这是因为与T1的连接但我不知道如何隔离ROW_NUMBER ...

psql row-number
1个回答
1
投票

作品

SELECT DISTINCT ON (T2.field2, T2.field3)
  T2.field2 AS F2,
  T2.field3 AS F3,
  ROW_NUMBER () OVER (ORDER BY T2.field3 DESC) AS F4
FROM T2
JOIN T1 ON T2.field3=T1.field3;

也有效,DENSE_RANK()也不会重复计算

在这里的第302行,我讨论为什么我使用DENSE_RANK代替ROW_NUMBER或RANK https://github.com/pavankat/fantasy-football/blob/master/db/queries.sql

SELECT DISTINCT ON (T2.field2, T2.field3)
  T2.field2 AS F2,
  T2.field3 AS F3,
  DENSE_RANK() OVER (ORDER BY T2.field3 DESC) AS F4
FROM T2
JOIN T1 ON T2.field3=T1.field3;
© www.soinside.com 2019 - 2024. All rights reserved.