Как я могу вставить новый столбец в базу данных с меткой '1' / '2' / '3' / '4' # на основе квантиля другого столбца? - PullRequest
1 голос
/ 08 ноября 2019

У меня проблема с вставкой столбца в таблицу. Я уже рассчитал квантиль одного столбца, но как мне вставить в таблицу?

.open books.db

ALTER TABLE booksCSV ADD COLUMN quantile_rank;

SELECT average_rating, NTILE(4) OVER (ORDER BY average_rating DESC) AS quantile_rank FROM booksCSV;

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Я на самом деле не рекомендую делать это, потому что, если вы имеете в виду столбец, который легко получить из данных базовой таблицы, то лучше не хранить его. При этом, возможно, вы просто ищете обновление здесь:

ALTER TABLE booksCSV ADD quantile_rank REAL;

UPDATE booksCSV b
SET quantile_rank = (SELECT t.quartile_rank
                     FROM (
                         SELECT id, NTILE(4) OVER (ORDER BY average_rating DESC) AS quartile_rank
                         FROM booksCSV
                     ) t
                     WHERE t.id = b.id);
0 голосов
/ 08 ноября 2019

После добавления столбца вы можете использовать CTE следующим образом:

WITH cte as (SELECT rowid, NTILE(4) OVER (ORDER BY average_rating DESC) AS qr FROM booksCSV)
UPDATE booksCSV
SET quantile_rank = (SELECT qr FROM cte 
                     WHERE booksCSV.rowid = rowid);

...