2
我想统计使用MySQL分组的ID列值的变化数量。MySQL的计数变化
源表:
create table sequence
(
`Id` int,
`Date` date,
`Value` int not null,
PRIMARY KEY (`Id`,`Date`)
);
insert into sequence
(`Id`,`Date`, `Value`)
values
(1, '2016-01-01' , 0 ),
(1, '2016-01-02' , 10),
(1, '2016-01-03' , 0 ),
(1, '2016-01-05' , 0 ),
(1, '2016-01-06' , 10),
(1, '2016-01-07' , 15),
(2, '2016-01-08' , 15);
可视化:
+------------+-------+-------+
| Date | ID | Value |
+------------+-------+-------+
| 2016-01-01 | 1 | 0 |
| 2016-01-02 | 1 | 10 | (change)
| 2016-01-03 | 1 | 0 | (change)
| 2016-01-05 | 1 | 0 |
| 2016-01-06 | 1 | 10 | (change)
| 2016-01-07 | 1 | 15 | (change)
| 2016-01-08 | 2 | 15 |
+------------+-------+-------+
预期输出:
+-------+-------+
| ID | Value |
+-------+-------+
| 1 | 4 |
| 2 | 0 |
+-------+-------+
我想问一下,如果有一种方法如何在SQL做到这一点。
是一些目标。很多方法。您可以使用窗口函数,特别是滞后。窗口函数并不适用于所有SQL风格,因此快速和肮脏的方法是添加一个行号,然后通过a.rownumber = b.rownumber + 1将内部表加入到表中(按日期,id排序)。搜索延迟/行号结束,你会发现很多好消息 –
不应该是2-1而不是2-0? –
http://www.mysqltutorial.org/mysql-row_number/显示了2种模拟MySQL中行数的方法。 MS有它内置 –