Почти стигнахте с вашето запитване. Просто използвайте filter
клауза за получаване на броя на гласовете на текущия потребител
SELECT
post.postID as postID,
post.title as title,
post.author as author,
post.created as created,
COALESCE(sum(votes.vote), 0) as voteCount,
COALESCE(sum(votes.vote) filter (where votes.username= 'username'), 0) as userVote -- in '' just provide username for current login user
FROM post
LEFT JOIN votes ON post.postID = votes.postID
GROUP BY 1,2,3,4
ORDER BY 5 DESC
Друг начин е да използвате още едно ляво съединение, както по-долу:
SELECT
p.postID as postID,
p.title as title,
p.author as author,
p.created as created,
COALESCE(sum(v1.vote), 0) as voteCount,
COALESCE(v2.vote , 0) as userVote -- in '' just provide username for current login user
FROM post p
LEFT JOIN votes v1 ON p.postID = v1.postID
LEFT JOIN votes v2 on p.postID = v2.postID and v2.username='username'
GROUP BY 1,2,3,4,v2.vote
ORDER BY 5 DESC