Si vous voulez que les décennies où vous n'avez pas des films aussi bien que ceux avec des films, alors vous peut utiliser generate_series
pour construire votre liste de décennies et faire une jointure externe gauche à votre table; generate_series
est la manière standard de créer des listes numériques et temporelles à la volée dans PostgreSQL. Quelque chose comme cela devrait vous aider à démarrer:
select decade.d, count(t.year)
from generate_series(1900, 2100, 10) as decade(d)
left outer join your_table t on decade.d = floor(t.year/10) * 10
group by decade.d
order by decade.d
qui produira une sortie comme ceci:
d | count
------+-------
1900 | 1
1910 | 0
1920 | 1
1930 | 3
1940 | 0
1950 | 0
1960 | 1
1970 | 0
1980 | 3
-- ...
2100 | 0
Vous pouvez régler les première et dernière pour l'appel generate_series
pour correspondre à vos données si on le souhaite.
Le bit vous donne une décade pour une année donnée; il va convertir 1942 à 1940, 2000 à 2000, etc.
Vous pouvez mettre en place une table de la décennie (un tableau à une colonne avec une entrée pour chaque décennie) si vous vous déplacez vers une base de données qui n'a pas quelque chose comme generate_series
. Le SQL serait à peu près le même, il suffit de remplacer l'appel generate_series
avec votre table de la décennie.
J'ai fait une requête similaire dans postgresql. Je vais vérifier si je l'ai sauvé. – heldt