毎日の差分値を取得するMySQLのクエリ

私はこのようなテーブルから毎日の差分値を取得する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
1

1 答え

このクエリを試す -

SELECT
  t1.dt AS date,
  t1.value - t2.value AS value
FROM
  (SELECT DATE(date) dt, MAX(value) value FROM table GROUP BY dt) t1
JOIN
  (SELECT DATE(date) dt, MAX(value) value FROM table GROUP BY dt) t2
    ON t1.dt = t2.dt + INTERVAL 1 DAY
2
追加された
ありがとう、それは魅力のように動作します。
追加された 著者 Jaime M.,