私はこのようなテーブルから毎日の差分値を取得するMySQLを作成したい:
Date | VALUE
--------------------------------
"2011-01-14 19:30" | 5
"2011-01-15 13:30" | 6
"2011-01-15 23:50" | 9
"2011-01-16 9:30" | 10
"2011-01-16 18:30" | 15
私は2つのサブクエリーを作った。最初の1つは、このデータから差異値を計算したいので、最後の1日の値を取得することです。
SELECT r.Date, r.VALUE
FROM table AS r
JOIN (
SELECT DISTINCT max(t.Date) AS Date
FROM table AS t
WHERE t.Date < CURDATE()
GROUP BY DATE(t.Date)
) AS x USING (Date)
第2のものは、最初のものの結果から微分値を得るために作られます(私はそれを "テーブル"という名前で表示します):
SELECT Date, VALUE - IFNULL(
(SELECT MAX( VALUE )
FROM table
WHERE Date < t1.table) , 0) AS diff
FROM table AS t1
ORDER BY Date
最初は、最初のクエリの結果を一時テーブルに保存しようとしましたが、 2番目のクエリで一時テーブルを使用することはできません。エイリアスとの間に2番目の()のFROM内で最初のクエリを使用すると、サーバーはテーブルエイリアスが存在しないという苦情を受け取ります。どのようにこのようなものを得ることができます:
Date | VALUE
---------------------------
"2011-01-15 00:00" | 4
"2011-01-16 00:00" | 6