Try this:
SELECT "title", "Question"."idQuestion",
( SELECT COUNT(*) as upvotes
FROM "VoteQuestion", "Question"
WHERE "VoteQuestion"."idQuestion" = "Question"."idQuestion"
AND "VoteQuestion"."isUp" IS TRUE
) AS upvt,
( SELECT COUNT(*) as downvotes
FROM "VoteQuestion", "Question"
WHERE "VoteQuestion"."idQuestion" = "Question"."idQuestion"
AND "VoteQuestion"."isUp" IS FALSE
) AS downvt, upvt.upvotes-downvt.downvotes AS total
FROM "VoteQuestion", "Question"
WHERE "VoteQuestion"."idQuestion" = "Question"."idQuestion"
GROUP BY "title", "Question"."idQuestion"
ORDER BY total DESC
LIMIT 5
Hope it helps you
UPDATE
Let's try this one:
SELECT "title", "Question"."idQuestion",
upvotes, downvotes, upvotes-downvotes AS total
FROM "VoteQuestion", "Question",
( SELECT "idQuestion", COUNT(*) as upvotes
FROM "VoteQuestion", "Question"
WHERE "VoteQuestion"."idQuestion" = "Question"."idQuestion"
AND "VoteQuestion"."isUp" IS TRUE GROUP BY "idQuestion"
) AS upvt,
( SELECT "idQuestion", COUNT(*) as downvotes
FROM "VoteQuestion", "Question"
WHERE "VoteQuestion"."idQuestion" = "Question"."idQuestion"
AND "VoteQuestion"."isUp" IS FALSE GROUP BY "idQuestion"
) AS downvt
WHERE "VoteQuestion"."idQuestion" = "Question"."idQuestion"
AND "VoteQuestion"."idQuestion" = downvt."idQuestion"
AND "VoteQuestion"."idQuestion" = upvt."idQuestion"
GROUP BY "title", "Question"."idQuestion"
ORDER BY total DESC
LIMIT 5