这是我拥有的数据集:
user_id sum_min sum_max
---------- --------------- -----------------
38 300000.00 300000.00
38 320000.00 320000.00
38 340000.00 340000.00
38 350000.00 350000.00
38 380000.00 380000.00
38 380000.00 380000.00
38 400000.00 400000.00
38 420000.00 420000.00
38 450000.00 450000.00
38 450000.00 450000.00
38 480000.00 480000.00
38 480000.00 480000.00
38 500000.00 500000.00
38 520000.00 520000.00
我需要做的是建立范围,例如sum_max的值是来自下一条记录的sum_min的值。 预期结果应为:
user_id sum_min sum_max
---------- --------------- -----------------
38 300000.00 320000.00
38 320000.00 340000.00
38 340000.00 350000.00
38 350000.00 380000.00
38 380000.00 380000.00
38 380000.00 380000.00
有什么想法吗?
感谢。
答案 0 :(得分:1)
考虑以下内容......
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,user_id INT NOT NULL
,sum_min INT NOT NULL
);
INSERT INTO my_table (user_id,sum_min) VALUES
( 38 , 30),
( 38 , 32),
(38 ,34),
(38 ,35),
(38 ,38),
(38 ,38),
(38 ,40),
(38 ,42),
(38 ,45),
(38 ,45),
(38 ,48),
(38 ,48),
(38 ,50),
(38 ,52);
SELECT x.user_id
, x.sum_min
, MIN(y.sum_min) sum_max
FROM my_table x
JOIN my_table y
ON y.user_id = x.user_id
AND y.sum_min > x.sum_min
GROUP
BY user_id
, sum_min;
+---------+---------+---------+
| user_id | sum_min | sum_max |
+---------+---------+---------+
| 38 | 30 | 32 |
| 38 | 32 | 34 |
| 38 | 34 | 35 |
| 38 | 35 | 38 |
| 38 | 38 | 40 |
| 38 | 40 | 42 |
| 38 | 42 | 45 |
| 38 | 45 | 48 |
| 38 | 48 | 50 |
| 38 | 50 | 52 |
+---------+---------+---------+