このディレクトリの索引
http://toro.2ch.net/test/read.cgi/db/1316769778/464
#  DBMSはMySQL 5.0です。 
#   
#  テーブル 合否 
#  社員番号,結果,エラーコード 
#  1,合格,0 
#  2,合格,0 
#  1,合格,1 
#  1,不合格,0 
#  3,合格,0 
#  2,合格,0 
#  2,不合格,1 
#   
#  こういうテーブルがあります。 
#  社員は一人で複数回受験できて、合格か不合格の結果を記録します。 
#  但し、特定の条件だとエラーになって結果は出るけどエラーコードに1がつきます。 
#   
#  (1)エラーコードが0のものの、合格と不合格の件数が知りたいとき 
#  SELECT 結果,COUNT(結果) FROM 合否 WHERE エラーコード=0 GROUP BY 結果 
#   
#  結果 
#  合格,4 
#  不合格,1 
#   
#  (2)エラーコードにかかわらず、合格と不合格の件数が知りたいとき 
#  SELECT 結果,COUNT(結果) FROM 合否 GROUP BY 結果 
#   
#  結果 
#  合格,5 
#  不合格,2 
#   
#  そこで、 
#  (1)と(2)を同じ表に出力したいときはどう書けばいいでしょうか。 
#  このような表になればいいです。よろしくお願いします。 
#  合格,4,5 
#  不合格,1,2 
# 

'(1) エラーコードが0のものの、合格と不合格の件数が知りたい'(_エラーコード0のものの合格の件数,_エラーコード0のものの不合格の件数) :-
        count(合否(_,合格,0),_エラーコード0のものの合格の件数),
        count(合否(_,不合格,0),_エラーコード0のものの不合格の件数).

'(2) エラーコードにかかわらず、合格と不合格の件数が知りたい'(_エラーコードにかかわらない合格の件数,_エラーコードにかかわらない不合格の件数) :-
        count(合否(_,合格,_),_エラーコードにかかわらない合格の件数),
        count(合否(_,不合格,_),_エラーコードにかかわらない不合格の件数).

'(1)と(2)を同じ表に出力する' :-
        '(1) エラーコードが0のものの、合格と不合格の件数が知りたい'(_エラーコード0のものの合格の件数,_エラーコード0のものの不合格の件数),
        '(2) エラーコードにかかわらず、合格と不合格の件数が知りたい'(_エラーコードにかかわらない合格の件数,_エラーコードにかかわらない不合格の件数),
        writef('合格,%t,%t\n不合格,%t,%t\n',[_エラーコード0のものの合格の件数,_エラーコード0のものの不合格の件数,_エラーコードにかかわらない合格の件数,_エラーコードにかかわらない不合格の件数]).