I'm using a JSON column to store some aggregate data, like so:

    UPDATE courses_table
    SET aggregates = agg.aggregates
    FROM (
      SELECT course_id, row_to_json(sub) AS aggregates
      FROM (
        SELECT course_id, avg(rating) AS rating, sum(reviews_count) AS
reviews_count,
          sum(user_started_count)   AS user_started_count,
sum(all_user_started_count)   AS all_user_started_count,
          sum(user_completed_count) AS user_completed_count,
sum(all_user_completed_count) AS all_user_completed_count
        FROM course_details_table
        GROUP BY course_id
      ) sub
    ) agg
    WHERE courses_table.id = agg.course_id;

This works, but also stores the course_id in the JSON document. Is
there a relatively clean way to remove it? The suggestions I got in
#postgresql on freenode were to remove the course_id from the
innermost select, but that would break the outer queries, or to use
row() to select only a few of the columns, which loses their column
names. I'm on PG 9.3.3.

Thanks!
Chris


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to