Как вывести группу и применить к ней агрегатную функцию postgresql

У меня есть две таблички. 1 - табличка тем для форума.

CREATE TABLE forum.thread
(
    id      SERIAL PRIMARY KEY NOT NULL,
    title   TEXT               NOT NULL,
    author  VARCHAR(60)        NOT NULL,
    forum   VARCHAR(255)       NOT NULL,
    message TEXT               NOT NULL,
    slug    varchar(255) UNIQUE,
    created TIMESTAMP          NOT NULL,
    FOREIGN KEY (author) REFERENCES forum.profile (nickname),
    FOREIGN KEY (forum) REFERENCES forum.forum (slug)
);

2 - табличка голосов за эту тему.

CREATE TABLE forum.votes
(
    thread  INTEGER     NOT NULL,
    profile varchar(60) NOT NULL,
    voice   integer     NOT NULL,
    FOREIGN KEY (profile) REFERENCES forum.profile (nickname),
    FOREIGN KEY (thread) REFERENCES forum.thread (id)
);

В табличке голосов хранится id темы(поле thread) и значение голоса(1 или -1). Мне нужно вывести все что есть в табличке thread + количество голосов, за каждый конкретный thread.

Я пытаюсь сделать это так, но ничего не выходит.

SELECT DISTINCT t.id, t.title, t.author, t.forum, t.message, t.slug, t.created, SUM(voice)
FROM forum.thread AS t
LEFT JOIN forum.votes AS v
ON t.id = v.thread
GROUP BY (t.id, t.title, t.author, t.forum, t.message, t.slug, t.created);

Как правильно сгруппировать данные, чтоб можно было вывести их и применить агрегатную функцию?


Ответы (0 шт):