SQL distribution de fréquence requête pour compter les plages de groupe et comprennent le 0 compte

Donné:

table 'thing':

age
---
3.4
3.4
10.1
40
45
49

Je veux compter le nombre de choses pour chacun des 10 ans de la gamme, par exemple,

age_range | count
----------+-------
        0 |     2
        10|     1
        20|     0
        30|     0
        40|     3

Cette requête vient fermer:

SELECT FLOOR(age / 10) as age_range, COUNT(*)
FROM thing
GROUP BY FLOOR(age / 10) ORDER BY FLOOR(age / 10);

De sortie:

 age_range | count 
-----------+-------
         0 |     1
         1 |     2
         4 |     3

Cependant, il ne veut pas me montrer les différentes gammes qui ont 0 compte. Comment puis-je modifier la requête afin qu'elle montre également les gammes entre 0 compte?

J'ai trouvé similaires stackoverflow questions pour le comptage des plages, certains de 0 compte, mais ils impliquent d'avoir à préciser à chaque gamme (soit de coder en dur les plages dans la requête, ou en mettant les plages dans un tableau). Je préfère utiliser une requête générique comme celui ci-dessus, où je n'ai pas de spécifier explicitement chaque cas (p. ex., 0-10, 10-20, 20-30, ...). Je suis en utilisant PostgreSQL 9.1.3.

Est-il un moyen de modifier la requête simple ci-dessus pour 0 compte?

Similaires à:

Oracle: comment "groupe" sur une plage?

Obtenir la fréquence de distribution d'une virgule gamme dans MySQL

OriginalL'auteur Rob Bednark | 2012-03-13