このディレクトリの索引
http://pc11.2ch.net/test/read.cgi/db/1274791771/243
# プログラム言語で以下の集約を定義しなさい。 
# SELECT CASE pref_name 
#        WHEN '徳島' THEN '四国' 
#        WHEN '香川' THEN '四国' 
#        WHEN '愛媛' THEN '四国' 
#        WHEN '高知' THEN '四国' 
#        WHEN '福岡' THEN '九州' 
#        WHEN '佐賀' THEN '九州' 
#        WHEN '長崎' THEN '九州' 
#        ELSE 'その他' END AS district, 
#     SUM(population) 
#  FROM PopTbl 
#  GROUP BY CASE pref_name 
#        WHEN '徳島' THEN '四国' 
#        WHEN '香川' THEN '四国' 
#        WHEN '愛媛' THEN '四国' 
#        WHEN '高知' THEN '四国' 
#        WHEN '福岡' THEN '九州' 
#        WHEN '佐賀' THEN '九州' 
#        WHEN '長崎' THEN '九州' 
#        ELSE 'その他' END; 

地方で集約する(_地方,_人口) :-
        findsetof(_地方,(
                    'PopTbl'(_pref_name,_population),
                    地方(_地方,_pref_name)),
                  L1),
        append(_,[_地方|_],L1),
        findsum(_population,(
                    'PopTbl'(_pref_name,_population),
                    地方(_地方,_pref_name)),
                _人口).

地方(四国,徳島).
地方(四国,香川).
地方(四国,愛媛).
地方(四国,高知).
地方(九州,福岡).
地方(九州,佐賀).
地方(九州,長崎).