代码之家  ›  专栏  ›  技术社区  ›  klaus

PSQL:行数连续递增

  •  0
  • klaus  · 技术社区  · 7 年前

    嗨,有以下表格:

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

     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的连接,但我不知道如何隔离行\号。。。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Pavan Katepalli    7 年前

    作品

    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;
    

    同样有效 以及 密级()不会重复计算

    在这里的第302行,我讨论了为什么我使用密集秩而不是行数或秩 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;
    
    推荐文章