我尝试从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查询获得此结果,但我没有设法做到这一点。任何人?
答案 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;