oracle累计求和,大于某个数后归零重新求和
时间: 2023-08-15 08:02:11 浏览: 107
您可以使用Oracle的窗口函数和条件判断来实现累计求和,并在大于某个数后将累计值归零重新求和。以下是一个示例的SQL查询:
```sql
SELECT column_name,
CASE WHEN cum_sum > your_threshold THEN 0 ELSE cum_sum END AS sum
FROM (
SELECT column_name,
SUM(column_name) OVER (ORDER BY column_name) AS cum_sum
FROM your_table
) t;
```
在上面的查询中,您需要将`column_name`替换为实际的列名,并将`your_table`替换为实际的表名。该查询使用了`SUM`函数和`OVER`子句来计算累计求和,然后通过`CASE`语句判断累计值是否大于某个阈值,如果大于则将值设为0,否则保持累计值不变。
请注意,您需要将`your_threshold`替换为实际的阈值。这个查询会返回包含原始列和累计求和列的结果集,其中大于阈值的累计求和值将被置为0。
相关问题
oracle归零重新求和
要在Oracle中将某列归零并重新求和,您可以使用窗口函数和条件判断来实现。以下是一个示例的SQL查询:
```sql
SELECT column_name,
CASE WHEN reset_condition THEN 0 ELSE SUM(column_name) OVER (ORDER BY column_name) END AS sum
FROM (
SELECT column_name,
CASE WHEN column_name > your_threshold THEN 1 ELSE 0 END AS reset_condition
FROM your_table
) t;
```
在上面的查询中,您需要将`column_name`替换为实际的列名,并将`your_table`替换为实际的表名。该查询使用了`SUM`函数和`OVER`子句来计算累计求和,并通过`CASE`语句判断是否满足归零条件。如果满足归零条件,则将累计值设为0;否则,保持累计值不变。
请注意,您需要将`your_threshold`替换为实际的阈值。这个查询会返回包含原始列和重新求和列的结果集,其中根据归零条件计算出的累计求和值。
阅读全文