在 table (mysql) 中自动计算范围

Calculate the range automatically in a table (mysql)

例如,我有一个 table1:

      +------+----------+                                                         
      | num  | duration |                                           
      +------+----------+                                                    
      |   10 |        0 |
      |   15 |        1 |
      |    5 |        2 |
      |    7 |        3 |
      |   12 |        4 |
      |   13 |        5 |
      |    3 |        6 | 
      +------+----------+  

在这个table中,"duration"的取值范围是0到6。"num"表示有多少个flow的session duration是0或者1或者2等等。例如第一行表示有 10 个流,它们的会话持续时间为 0。第二行表示有 15 个流,它们的会话持续时间为 1。 现在,我想计算有多少流的会话持续时间大于 0、大于 1、大于 2、大于 3 等

select *
from 
( select sum(num) as totalnum,duration 
  from table1
  where duration >=
  (
    select duration from table1
  )
)as a; 

但是 mysql 提到 "Subquery returns more than 1 row"。 我想要 table 喜欢:

+-----------+----------+
| totalnum  | duration |
+-----------+----------+
|   65      |        0 |
|   55      |        1 |
|   40      |        2 |
|   35      |        3 |
|   28      |        4 |
|   16      |        5 |
|    3      |        6 |
+-----------+----------+

这个table的意思是:比如第一行表示有65个流的session duration大于0。 第二行表示有 55 个流的会话持续时间大于 1。 我该怎么办?

尝试将 table 加入自身,其中加入标准是持续时间大于或等于正在处理的 FROM 条目中的持续时间的条目:

SELECT SUM(T1up.num) AS totalnum, T1.duration
FROM table1 AS T1
LEFT JOIN table1 AS T1up
ON T1up.duration>=T1.duration
GROUP BY T1.duration;