MySQL查询获取每日差异值

时间:2012-02-06 11:03:27

标签: 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

我做了两个子查询。第一个是获取最后一个每日值,因为我想计算这些数据的差值:

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)

第二个用于从第一个结果得到差值(我用“表”名称显示):

SELECT Date, VALUE - IFNULL( 
    (SELECT MAX( VALUE ) 
    FROM table
    WHERE Date < t1.table) , 0) AS diff
    FROM table AS t1
    ORDER BY Date

首先,我尝试将第一个查询的结果保存在临时表中it's not possible to use temporary tables with the second query。如果我使用别名之间的第二个FROM之间的第一个查询和别名,则服务器对表别名的投诉不存在。怎么能得到这样的东西:

 Date               | VALUE
 ---------------------------
 "2011-01-15 00:00" |   4
 "2011-01-16 00:00" |   6

1 个答案:

答案 0 :(得分:2)

尝试此查询 -

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