Обновите таблицу postgresql с результатами запроса - PullRequest
0 голосов
/ 25 марта 2020

У меня есть таблица postgresql с 2 столбцами:

  1. код
  2. pharm

Столбец кода не содержит уникальных значений. В нем есть дубликаты. Я хочу посчитать эти значения как:

SELECT code, COUNT(code) FROM TABLE GROUP BY code ORDER BY 1

и использовать результат COUNT из запроса, чтобы назначить его в столбце PHARM. Итак, финальная таблица должна выглядеть так:

CODE  PHARM
AB     3
AB     3
AB     3
CD     2
CD     2

...

Я попытался поэкспериментировать с запросом UPDATE следующим образом:

UPDATE TABLE SET (pharm) = (SELECT COUNT(code) FROM TABLE GROUP BY code)

Однако это не работает, и я совершенно уверен, что это не правильный способ сделать это. Я думаю, мне нужно построить какую-то функцию, чтобы сделать этот тип обновления?

1 Ответ

0 голосов
/ 25 марта 2020

Вы можете сделать это, присоединив таблицу к вашему запросу:

update tablename t
set pharm = g.counter
from (
  select code, count(*) counter
  from tablename
  group by code
) g
where g.code = t.code;

См. demo . или:

update tablename t
set pharm = (select count(*) from tablename where code = t.code);

См. демоверсию . или:

update tablename t
set pharm = (select count(*) filter (where code = t.code) from tablename);

См. демоверсию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...