SQL SUM 直到条件

SQL SUM until condition

我有一个 table itineraire 有 4 个列,order, id_arret, nom, temp_moyen .

所以我想 SUM temp_moyen 直到 id_arret = X 并停止

例子:

如果 id_arret=5 总和应该是:0+5+4+3+6= 18

您可以使用 where 子句来过滤您想要的值:

select sum(temp_moyen)
from t
where id_arret < ?;

如果您想要一个 不同的 列作为停靠点,比如 nom,那么您可以使用子查询:

select sum(temp_moyen)
from t
where t.order < (select t2.order from t t2 where t2.id_arret = ?);

我怀疑你想要:

select sum(temp_moyen)
from mytable t
where t.ord <= (select t1.ord from mytable t1 where t1.id_arret = 5)

这会识别对应于 id_arret 5ord,然后将其 temp_moyen 与前面的所有行相加。

您还可以使用 window 函数:

select sum_temp_moyen
from (
    select t.*, sum(temp_moyen) over(order by ord) sum_temp_moyen
    from mytable t
) t
where id_arret = 5

我将 order 重命名为 ord,因为前者在几乎所有数据库中都是保留的(如 order by)。