sql - 如何在 Teradata SQL 中合并 Sum 和 Rank 函数?
问题描述
我试图从前 8 个月总结前 6 个月的石油价值。关于如何将 Sum 和 Rank 函数合并到 SQL 代码中,我对此不太了解。
这是我的 SQL 代码:-
SELECT WELL_NAME,
Number_of_Months_on_Prod,
OIL,
ROW_NUMBER() OVER(PARTITION BY WELL_NAME ORDER BY OIL DESC) AS RANK_OIL,
SUM(CASE WHEN (RANK_OIL >= 1) AND (RANK_OIL) <= 6 THEN Coalesce(BOE6, 0) ELSE 0 END) Over (PARTITION BY WELL_NAME ) as BEST_6_OF_8_MONTH_OIL
FROM TABLE_WELL
ORDER BY WELL_NAME ;
我得到有序解析函数不能嵌套错误。任何帮助将不胜感激。这是我的样本数据集。
解决方案
我看到了这个多层次的窗口函数:
SELECT WELL_NAME, Number_of_Months_on_Prod, OIL,
SUM(CASE WHEN RANK_OIL <= 6 AND SEQNUM <= 8 THEN BOE6 END) OVER (PARTITION BY WELL_NAME) AS BEST_6_OF_8_MONTH_OIL
FROM (SELECT TW.*,
ROW_NUMBER() OVER (PARTITION BY WELL_NAME, (CASE WHEN SEQNUM <= 8 THEN 1 ELSE 2 END)
ORDER BY OIL DESC
) AS RANK_OIL
FROM (SELECT TW.*,
ROW_NUMBER() OVER (PARTITION BY WELL_NAME ORDER BY OIL DESC) AS SEQNUM
FROM TABLE_WELL TW
) TW
) TW
ORDER BY WELL_NAME ;
推荐阅读
- javascript - 如何分离图标和输入类型文本框并将div移动到右上角?
- python - Python:PermissionError:[Errno 13] 权限被拒绝:'D:/Documents/1'
- xml - 包含 & 符号的 XML 文件
- python - 几何必须是使用 Cartopy 的点或线串错误
- postgresql - 窗口函数
- node.js - 如何断言应用程序使用 POST 请求向 API 服务器发送正确的数据
- r - 删除特定行之前的观察
- hadoop - 具有许多并行存储桶的 Flink Hadoop Bucketing Sink 性能
- scripting - 如何在网页测试脚本中保存变量
- javascript - 在 React 中通过 map 方法传递 prop