我用我手里的测试表给你做个例子
mysql> select * from sc;
+-----+------+-------+
| sno | cno | grade |
+-----+------+-------+
| 11 | 21 | 85 |
| 12 | 22 | 60 |
| 11 | 22 | 46 |
| 13 | 22 | 90 |
| 11 | 23 | 75 |
| 12 | 23 | 73 |
| 13 | 23 | NULL |
+-----+------+-------+
7 rows in set (0.00 sec)
select sc_.sno,sc_.cno,sc_.grade, sv, (sum(sv)over(order by index_))as vs
from
(select (row_number()over()) as index_,sc.*,
(case when cno<23 then grade else 0 end)as sv
from sc
) as sc_;
+-----+------+-------+------+------+
| sno | cno | grade | sv | vs |
+-----+------+-------+------+------+
| 11 | 21 | 85 | 85 | 85 |
| 12 | 22 | 60 | 60 | 145 |
| 11 | 22 | 46 | 46 | 191 |
| 13 | 22 | 90 | 90 | 281 |
| 11 | 23 | 75 | 0 | 281 |
| 12 | 23 | 73 | 0 | 281 |
| 13 | 23 | NULL | 0 | 281 |
+-----+------+-------+------+------+
7 rows in set (0.00 sec)