Mysql重新组合图表的数据

时间:2014-05-08 14:37:49

标签: mysql

我尝试从mysql表'sells'构建一个图表。每个月(列'日期'),3个用户(列'用户')保存一个值(列'值')。

id | user  | date       | value
--------------------------------
1  | 1     | 2014-01-01 | 556
2  | 2     | 2014-01-01 | 703
3  | 3     | 2014-01-01 | 200
4  | 1     | 2014-02-01 | 240
5  | 2     | 2014-02-01 | 950
6  | 3     | 2014-02-01 | 120
7  | 1     | 2014-03-01 | 450
8  | 2     | 2014-03-01 | 560
9  | 3     | 2014-03-01 | 704
10 | 1     | 2014-04-01 | 208
11 | 2     | 2014-04-01 | 254
....

我尝试构建一个图表,显示所选用户和给定的时间间隔: - 所选用户的个人价值 - 所有用户之间的最小值 - 所有用户之间的最大值

以下是我尝试获取此结果的内容,对于用户“1”:

date       | value | min | max
--------------------------------
2014-01-01 | 556   | 200 | 703
2014-02-01 | 240   | 120 | 950
2014-03-01 | 450   | 450 | 704
2014-04-01 | 208   | 208 | 254
...

我认为可以通过单个mysql查询获得此结果,但我没有设法做到这一点。任何人?

2 个答案:

答案 0 :(得分:1)

SELECT x.*
     , min_value
     , max_value 
  FROM my_table x 
  JOIN 
     ( SELECT date
            , MIN(value) min_value
            , MAX(VALUE) max_value 
         FROM my_table 
        GROUP 
           BY date
     ) y
    ON y.date = x.date
 ORDER  
    BY x.user
     , x.date;

答案 1 :(得分:0)

谢谢草莓。我刚刚添加条件来过滤用户:

SELECT x.*
     , min_value
     , max_value 
  FROM my_table x 
  JOIN 
     ( SELECT date
            , MIN(value) min_value
            , MAX(VALUE) max_value 
         FROM my_table 
        GROUP 
           BY date
     ) y
    ON y.date = x.date
 WHERE user = 1
 ORDER  
    BY x.date;