MySQL - 如何计算当前行之前出现的次数

标签 mysql

如下表:

+----------+------+
| 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/

相关文章:

mysql - R中的selectInput从MySql获取数据

java - 通过 java.sql.PreparedStatement.setBytes 进行 BINARY 比较时的空结果集

php - 在 laravel 中获取与自身类的关系时出现非法偏移类型错误

php - 在 PHP 和 MySQL 中存储和检索具有可搜索数组数据的对象

php - 如何在 Doctrine 的 createQuery 的 where 子句中使用字符串?

mysql - 给出 2009 年 5 月、6 月和 7 月的预订房间列表,价格大于每天 8000

php - 我有 Group_ConCat 函数的选择查询?

php - 如果一个对象的值在 JSON 文件中为空,则它采用以前的值

mysql - 在现有列之前添加列?

java - 构建一个可以在移动和 Web 应用程序之间同时传输数据的服务器端 API