Konwersja wyboru MySQL na PostgreSQL

Mam to zapytanie, które działa poprawnie w MySQL. Więcej informacji na ten temattutaj.

SELECT c.*, SUM(ABS(v.vote)) AS score
FROM categories c,items i, votes v
    WHERE c.id = i.category_id
    AND i.id = v.voteable_id
    AND v.created_at > '#{1.week.ago}'
GROUP BY c.id
ORDER BY score DESC LIMIT 8;

Próbowałem uruchomić go w PostgreSQL i nie powiodło się z tym komunikatem o błędzie.

PGError: ERROR: kolumna „c.name” musi pojawić się w klauzuli GROUP BY lub być używana w funkcji agregującej

Nie byłem pewien, co to oznacza, więc spróbowałem zmienić „c.id” na „c.name” w klauzuli group by (obie działają w MySQL tak samo, zakładając, że nazwa elementu jest unikalna).

Jednak to właśnie spowodowało kolejny podobny błąd

PGError: ERROR: kolumna „c.id” musi pojawić się w klauzuli GROUP BY lub być używana w funkcji agregującej

Jak rozwiązać ten problem?

questionAnswers(3)

yourAnswerToTheQuestion