Re: aggregate functions are not allowed in UPDATE
От | Alexander Farber |
---|---|
Тема | Re: aggregate functions are not allowed in UPDATE |
Дата | |
Msg-id | CAADeyWhb9FDLUX=c0quhONxzrkp9j9Gf2yr=Xp0f2Qautiu+oQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: aggregate functions are not allowed in UPDATE ("David G. Johnston" <david.g.johnston@gmail.com>) |
Ответы |
Re: aggregate functions are not allowed in UPDATE
|
Список | pgsql-general |
Ahh, the subqueries -
On Tue, Jan 15, 2019 at 5:59 PM David G. Johnston <david.g.johnston@gmail.com> wrote:
On Tue, Jan 15, 2019 at 9:52 AM Alexander Farber
<alexander.farber@gmail.com> wrote:
>> So calculate the average somewhere else, put the result in a column,
>> and then reference that column in the SET clause.
>
> do you suggest to add a second CTE?
That would qualify as "somewhere else" - as would a simple subquery in FROM.
they escaped my mind for some reason! :-)
WITH diffs AS (
SELECT
gid,
uid,
played - LAG(played) OVER(PARTITION BY gid ORDER BY played) AS diff
FROM moves
WHERE uid = 1
)
UPDATE users SET avg_time =
(
SELECT
AVG(diff)
FROM diffs
GROUP BY uid
)
WHERE uid = 1;
seems to work, thank you
В списке pgsql-general по дате отправления: