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
5
的 ord
,然后将其 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
)。
我有一个 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
5
的 ord
,然后将其 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
)。