我正在嘗試設定一列,但結果將最終為每行 0.0。如果我在 SELECT 中使用相同的語法(它的選擇部分),結果顯示正確。
UPDATE table1
SET ranking = (SELECT
PERCENT_RANK() OVER(PARTITION BY city ORDER BY sales DESC)
from table1
group by store_id)
是否有可能使這項作業?
uj5u.com熱心網友回復:
子查詢:
SELECT PERCENT_RANK() OVER(PARTITION BY city ORDER BY sales DESC)
from table1
group by store_id
為每個回傳 1 行store_id,SQLite 只選擇一個并使用PERCENT_RANK()表中所有行的該行值進行更新。
您必須將子查詢與 table1
UPDATE table1
SET ranking = (
SELECT pr
FROM (
SELECT store_id,
PERCENT_RANK() OVER(PARTITION BY city ORDER BY sales DESC) pr
FROM table1
GROUP BY store_id
) t
WHERE table1.store_id = t.store_id
);
或者,如果您的 SQLite 版本是 3.33.0,請使用以下UPDATE...FROM...語法:
UPDATE table1 AS t1
SET ranking = t.pr
FROM (
SELECT store_id,
PERCENT_RANK() OVER(PARTITION BY city ORDER BY sales DESC) pr
FROM table1
GROUP BY store_id
) t
WHERE t1.store_id = t.store_id;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/311404.html
