如下表:
+----------+------+
| Platform | day |
+----------+------+
| 1670254 | 0 |
| 1670254 | 0 |
| 1665087 | 0 |
| 1670254 | 0 |
| 1670254 | 1 |
| 1670254 | 1 |
| 1670254 | 1 |
| 1670254 | 1 |
| 1670254 | 1 |
| 1665160 | 1 |
| 1670254 | 1 |
| 1670254 | 2 |
| 1670254 | 2 |
| 1670254 | 3 |
| 1670254 | 4 |
| 1667145 | 5 |
我想添加第三列来计算先前日期的出现次数。例如,在第 1 天,平台 1670254 执行了 3 次之前的操作。
结果应该显示如下:
+----------+------+-----------+
| Platform | day | Previous |
+----------+------+-----------+
| 1670254 | 0 | 0 |
| 1670254 | 0 | 0 |
| 1665087 | 0 | 0 |
| 1670254 | 0 | 0 |
| 1670254 | 1 | 3 |
| 1670254 | 1 | 3 |
| 1670254 | 1 | 3 |
| 1670254 | 1 | 3 |
| 1670254 | 1 | 3 |
| 1665160 | 1 | 0 |
| 1670254 | 1 | 3 |
| 1670254 | 2 | 9 |
| 1670254 | 2 | 9 |
| 1670254 | 3 | 11 |
| 1670254 | 4 | 12 |
| 1667145 | 5 | 0 |
最佳答案
只需要一个相关查询即可获取每个平台的前一天。
<强> SQL DEMO
SELECT *, (SELECT COUNT(Platform)
FROM YourTable t2
WHERE t1.Platform = t2.Platform
AND t1.day > t2.day) as Previous
FROM YourTable t1
关于MySQL - 如何计算当前行之前出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57418780/