1

カウントrow_number() OVER()された行で結果に番号を付けることはできますか?

例えば

SELECT *,
    users::numeric/population::numeric*100 AS penetration,
    row_number() OVER(ORDER BY penetration DESC)
FROM states ORDER BY penetration DESC

エラーを生成します:

ERROR: column "penetration" does not exist
4

2 に答える 2

1

私はpostgreを使用しませんが、t-sqlの場合は次のようにする必要があります。

SELECT *,
    penetration,
    row_number() OVER(ORDER BY penetration DESC)
FROM 
(
   select users::numeric/population::numeric*100 AS penetration
   from states
)pen
 ORDER BY penetration DESC
于 2011-04-04T14:19:10.637 に答える
1

postgresqlではそれを行うことはできません。ここを探してexpressionください:4.2.8。ウィンドウ関数呼び出し、それは..それは出力することができないと言います-列名または番号..

サブクエリを使用できます。

SELECT states.*, penetration, row_number() OVER(ORDER BY penetration DESC)
  FROM states
  JOIN (SELECT id, users::numeric/population::numeric*100 AS penetration
          FROM states) s_pen on spen.id = states.id
 ORDER BY s_pen.penetration DESC
于 2011-04-04T14:26:29.877 に答える