このディレクトリの索引
http://pc11.2ch.net/test/read.cgi/db/1252492296/599
#  以下のSQLで最新日の2000円以上の売上があった商品を抽出しているんですが、 
#  SELECT * FROM SALES WHERE uriage >= 2000 AND date = (select max(date) from SALES) 
#  「その商品の前回売上があった日の売上額」と「前回の売上と比べてどれだけ増えたのかの増加率」 
#  を出したい場合どうしたらいいでしょう? 
#   
#  商品ID(id) | 日付(date) | 売上額(uriage) | 前回売上額 | 売上増加率 
#  3          | 1267714800 | 2500           | ?????      | ????? 
#  4          | 1267714800 | 2800           | ?????      | ????? 
#   
#  [日付の形式はunixtimeで、データ登録の際は日付だけ変更させ、時間と秒は常に統一させています] 
#  [mysql 5.1] 
# 

前回売上との比較売上表(_年/_月/_日) :-
    findall(_商品ID,(売上(_商品ID,_日付,_),localtime(_日付,_年,_月,_日,_,_,_,_)),_売上のあった商品IDならび),
        sort(_売上のあった商品IDならび
    member(_商品ID2,_売上のあった商品IDならび),
    当日の売上金額計(_商品ID2,_年/_月/_日,_売上金額計),
    前回売上があった日(_商品ID2,_日付,_前回売上があった日),
    前回売上があった日の売上金額計(_商品ID2,_前回売上があった日,_前回売上があった日の売上金額計),
    売上行表示(_商品ID2,_年/_月/_日,_売上金額計,_前回売上があった日の売上金額計),
    fail.
前回売上との比較売上表(_,_,_).

前回売上があった日(_商品ID,_日付,_前回売上があった日) :-
    localtime(_日付,_年1,_月1,_日1,_,_,_,_),
    findmax(_年2/_月2/_日2,(売上(_商品ID,_日付2,_),localtime(_日付2,_年2,_月2,_日2,_,_,_,_),_年1/_月1,_日1 @> _年2/_月2/_日2),_前回売上があった日).

前回売上があった日の売上金額計(_商品ID,_年/_月/_日,_売上金額計) :-
    findsum(_売上金額,(売上(_商品ID,_日付2,_売上金額),localtime(_日付2,_年,_月,_日,_,_,_,_)),_売上金額計).

当日の売上金額計(_商品ID,_年/_月/_日,_売上金額計) :-
    findsum(_売上金額,(売上(_商品ID,_日付,_売上金額),localtime(_日付,_年,_月,_日,_,_,_,_)),_売上金額計).

売上行表示(_商品ID,_年/_月/_日,_売上金額計,0.0) :-
    write_formatted('%8d | %2d/%2d/%2d | %12.0f\n',[_商品ID2,_年/_月/_日,_売上金額計]),!.
売上行表示(_商品ID,_年/_月/_日,_売上金額計,_前回売上金額計) :-
    _売上増加率 is _売上金額計 / _前回売上のあった日の売上金額計,
    write_formatted('%8d | %2d/%2d/%2d | %12.0f | %12.0f | %4.1f\n',[_商品ID,_年/_月/_日,_売上金額計,_前回売上金額計,_売上増加率]),!.