I figured out two ways of doing it. Both very simple. I was just being a tad silly :)
The first, and probably most simple one:
SELECT changes.name, SUM(11 - conversations.rank) as score FROM "changes"
INNER JOIN "conversations"
ON "conversations"."change_id" = "changes"."id"
GROUP BY changes.id
ORDER BY score desc
Simple maths eh. So if conversations.rank = 1, then it will be 10, because 1 minus 11 is 10.
Perhaps the better way to do it is to have another table:
CREATE TABLE ranks (
rank INT UNSIGNED PRIMARY KEY,
value INT UNSIGNED
);
INSERT INTO ranks
VALUES (1, 5),
(2, 4),
(3, 3),
(4, 2),
(5, 1);
And then to do a join ranks on conversations.rank:
SELECT changes.name, SUM(ranks.value) as score FROM "changes"
INNER JOIN "conversations"
ON conversations.change_id = changes.id
INNER JOIN "ranks"
ON conversations.rank = r.rank
GROUP BY changes.name;
Thanks for all the help.