This is a completely invalid syntax for Redshift (or Postgres). Reminds me of SQL Server ...
It should work like this (at least in the current Postgres):
UPDATE mr_usage_au
SET Moods = slog.Moods
, Activities = slog.Activities
, Durarion = slog.Duration
FROM (
select UserId
, ActionDate::date
, count(CASE WHEN EventId = 32 THEN UserId END) AS Moods
, count(CASE WHEN EventId = 33 THEN UserId END) AS Activities
, sum(CASE WHEN EventId = 10 THEN Duration END) AS Duration
FROM mr_session_log
WHERE EventTime >= current_date - 1
AND EventTime < current_date
GROUP BY UserId, ActionDate::date
) slog
WHERE slog.UserId = mr_usage_au.UserId
AND slog.ActionDate = mr_usage_au.Date;
This usually applies to Postgres and Redshift:
- Use the sentence
FROMto join additional tables. - You cannot table target columns in a sentence
SET.
, Redshift PostgreSQL 8.0.2, . Postgres.
.