PostgreSQL - Create view with autoincremental column
create view foo as (
select row_number() over (order by field), field, field2, field3 from bar
)
create view foo as (
select row_number() over(), field, field2, field3 from bar
)
這個功能說明如下
窗函數(window function)提供了在一個資料表中,進行資料列與資料列之間的關連運算。這部份可以和彙總函數的功能相呼應。然而,窗函數並無法像彙總函數一樣,把多個資料列運算合併為單一資料列的結果。取而代之的是,這些資料列仍然是分開並列的狀態。在這樣的情境下,窗函數能讓查詢結果的每一個資料列,都得到更多資訊
https://docs.postgresql.tw/tutorial/advanced-features/window-functions
使用 row_number() 來實現群組編排序號
假設有一張資料表(pay_table)如下:
pay_date tic_no money cnt
2019-05-15 T300104 $46,440 11
2019-05-15 I300132 $573 1
2019-05-15 I300129/T400265 $107,196 39
2019-05-17 I300128 $10,929 2
若要依pay_date欄位做分組序號,可以用ROW_NUMBER() OVER(PARTITION BY 群組依據欄位 ORDER BY 排序依據欄位 DESC)來實現
SELECT (ROW_NUMBER() OVER(PARTITION BY pay_date ORDER BY tic_no DESC)) group_sn, pay_date, tic_no, money, cnt
FROM pay_table