SQL Установить значение столбца с помощью COUNT (*) - PullRequest
0 голосов
/ 13 декабря 2018

Я хочу установить для столбца конкретное значение 1/COUNT(*) в таблице SQL.Мне интересно, как это сделать.

Чтобы было понятнее, рассмотрим следующий пример.У нас есть таблица table1

TABLE1:
    A  |  B  |  C  
---------------------
    1  |  9  |  0
    2  |  7  |  0
    4  |  8  |  0
    3  |  6  |  0

Я хочу установить столбец C со значением 1/COUNT(*), в данном случае это 0.25.Таким образом, результат должен быть:

TABLE1:
    A  |  B  |  C  
---------------------
    1  |  9  |  0.25
    2  |  7  |  0.25
    4  |  8  |  0.25
    3  |  6  |  0.25

Однако я попробовал следующий код:

UPDATE TABLE
SET C = 1/COUNT(*)

Он не работает и выдает ошибку:

Error: ERROR: aggregate functions are not allowed in UPDATE
Position: 21 

Как я должен сделать это в SQL?Спасибо!

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Ответ:

UPDATE TABLE SET C = 1.0 / (SELECT COUNT(*) FROM TABLE)
0 голосов
/ 13 декабря 2018

Если вы хотите update, используйте предложение from:

UPDATE TABLE
    SET C = 1.0 / c.cnt
    FROM (SELECT COUNT(*) as cnt FROM yourtable ) c;

Нет необходимости иметь отдельный столбец.Вы можете легко рассчитать это на лету:

select t.*,
       1.0 / count(*) over ()
from t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...