oracle想要获取最近每日收益连续超过500的天数,这种sql怎么写
时间: 2024-09-28 19:12:47 浏览: 25
Oracle 获取上周一到周末日期的查询sql语句
要编写这样的SQL查询,我们需要假设有一个名为`transactions`的表,其中包含`date`(日期)和`revenue`(收益)字段。我们可以使用窗口函数`ROW_NUMBER()`结合`CASE`语句来达到目的。以下是Oracle SQL的一个示例:
```sql
WITH daily_profit AS (
SELECT
date,
revenue,
ROW_NUMBER() OVER (ORDER BY date) as row_num,
SUM(CASE WHEN revenue > 500 THEN 1 ELSE 0 END) OVER (ORDER BY date) as consecutive_days
FROM transactions
)
SELECT
COUNT(*) as total_consecutive_days
FROM daily_profit
WHERE row_num = consecutive_days;
```
这个查询首先创建了一个名为`daily_profit`的CTE(公共表表达式),计算了每天的收益是否超过500,并累计连续的天数。然后在主查询中,我们找出那些收益连续超过500天的日子的数量。
阅读全文