Как вывести группу и применить к ней агрегатную функцию 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);
Как правильно сгруппировать данные, чтоб можно было вывести их и применить агрегатную функцию?