Twój problem:
Niestety ścisłość Postgresa łamie to zapytanie, ponieważ wymaga określenia wszystkich pól w klauzuli group by.
Teraz to się nieco zmieniło w PostgreSQL 9.1 (cytując informacje o wydaniu 9.1):
Zezwól na inne niż GROUP BY
kolumny na liście celów zapytania, gdy klucz podstawowy jest określony w GROUP BY
klauzula (Peter Eisentraut)
Co więcej, podstawowe zapytanie, które opisujesz, nawet nie natknie się na to:
Pokaż listę 5 najczęściej używanych tagów wraz z czasem ich otagowania.
SELECT tag_id, count(*) AS times
FROM taggings
GROUP BY tag_id
ORDER BY times DESC
LIMIT 5;
Działa w każdym przypadku.