PostgreSQL a eu fonctions de fenêtre depuis un certain temps maintenant, qui peut être utilisé pour faire beaucoup de choses, y compris compter les lignes avant que LIMIT ne soit appliqué.
Basé sur l'exemple ci-dessus :
SELECT stuff,
count(*) OVER() AS total_count
FROM table
WHERE condition
ORDER BY stuff OFFSET 40 LIMIT 20