このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1294641578/703
#  年代別集計をしたく以下のようにしていますが 
#  結果が0でもその年代も表示したいのですができませんでしょうか? 
#   
#  SELECT CASE 
#   when r.age between 0 and 9 then '0 - 9' 
#   when r.age between 10 and 19 then '10 - 19' 
#   when r.age between 20 and 29 then '20 - 29' 
#   when r.age between 30 and 39 then '30 - 39' 
#   when r.age between 40 and 49 then '40 - 49' 
#   when r.age between 50 and 59 then '50 - 59' 
#   when r.age between 60 and 69 then '60 - 69' 
#   when r.age between 70 and 79 then '70 - 79' 
#   when r.age between 80 and 89 then '80 - 89' 
#   when r.age between 90 and 99 then '90 - 99' 
#   when r.age >=100 then '100' 
#  end AS "age_group" 
#  ,COUNT(CASE 
#   when r.age between 0 and 9 then '0 - 9' 
#   when r.age between 10 and 19 then '10 - 19' 
#   when r.age between 20 and 29 then '20 - 29' 
#   when r.age between 30 and 39 then '30 - 39' 
#   when r.age between 40 and 49 then '40 - 49' 
#   when r.age between 50 and 59 then '50 - 59' 
#   when r.age between 60 and 69 then '60 - 69' 
#   when r.age between 70 and 79 then '70 - 79' 
#   when r.age between 80 and 89 then '80 - 89' 
#   when r.age between 90 and 99 then '90 - 99' 
#   when r.age >=100 then '100' 
#  end) AS "age_count" 
#  FROM      rank as r 
#  GROUP BY age_group 
#  ORDER BY age_group; 
# 
# 

'年代別集計を結果が0でも表示する' :-
        findall([_年代別表示,_度数],(
                    for(0,N,10),
                    年代別に集計する(N,_年代別表示,_度数)),
                LL),
        表示する(LL).

年代別に集計する(10,'100才以上',_度数) :-
        '100才以上を集計する'(_度数),!.
年代別に集計する(N,_年代別表示,_度数) :-
        _年齢下限 is N * 10,
        _年齢上限 is _年齢下限 + 9,
        年齢範囲の集計(_年齢下限,_年齢上限,_度数),
        concat_atom([_年齢下限,才,'-',_年齢上限,才],_年代別表示).

'100才以上を集計する'(_度数) :-
        count((
                    rank(_age),
                    _age >= 100),
                _度数).

年齢範囲の集計(_年齢下限,_年齢上限,_度数) :-
        count((
                    rank(_age),
                    _age >= _年齢下限,
                    _age =< _年齢上限),
                _度数).

表示する(LL) :-
        append(_,[[_年代別表示,_度数]|R],LL),
        writef('%t,%t\n',[_年代別表示,_度数]),
        R = [].