PostgreSQL
我有這個查詢:
SELECT *
FROM
(SELECT
(CASE
WHEN "Review".food IS NOT NULL AND "Review".service IS NOT NULL
THEN ("Review".food "Review".service) / 2
ELSE COALESCE(service, COALESCE(food, NULL)) END) AS rating,
"venueId" AS item_id,
"userId" AS user_id
FROM "Review") AS data
WHERE rating IS NOT NULL
AND user_id IS NOT NULL
AND item_id IS NOT NULL
ORDER BY item_id;
這將回傳如下輸出:

但是我需要有一個額外的列incremental_id,其中包含基于 item_id 的每一行的 id。
例如:

哪里有物品:
item_id = 2 incremental_id = 1;
item_id = 4 incremental_id = 2;
item_id = 8 incremental_id = 3;
item_id = 20 incremental_id = 4;
item_id = 23 incremental_id = 5;
我需要如何更改查詢以獲得所需的輸出格式?
uj5u.com熱心網友回復:
您可以為此使用dense_rank視窗函式。保留您的查詢,并在*. 這里是:
SELECT *, dense_rank() over (order by item_id) as incremental_id
FROM -- ... the rest of your query as-it-was ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331611.html
標籤:sql 数据库 PostgreSQL
上一篇:插入查詢中復選框狀態的插入引數
