sql - 不使用分析进行分组的自加入
问题描述
我正在创建一个程序,目的是返回满足一组条件的第一条记录。
CREATE OR REPLACE VIEW V_ACCOUNTS AS
SELECT
A.ID,
A.BALANCE,
A.PRODUCTCODE,
(SELECT COUNT(*) FROM ACCOUNTS A2 WHERE A.CUSTOMERID=A2.CUSTOMERID) CUSTOMER_NUM_ACCOUNTS
FROM ACCOUNTS A
例如
SELECT * FROM V_ACCOUNTS WHERE ROWNUM = 1 AND PRODUCTID = 467 AND CUSTOMER_NUM_ACCOUNTS > 2
这是否可以增强上述查询,从而避免在同一张表上进行自联接?我可以在条件下使用分析吗?性能是一个问题,我想尽可能优化查询。
解决方案
COUNT
分析功能可能会有所帮助:
create or replace view v_accounts as
select
a.id,
a.balance,
a.productcode,
count(*) over (partition by a.customerid) customer_num_accounts
from accounts a
推荐阅读
- css - CSS样式表完成加载后如何运行函数
- node.js - Node JS - 尝试创建 PDF 时出现标题错误
- python - 为什么标签与 pandas、itertools 和 numpy 索引不一致?
- java - 在浏览器中导出 csv 文件
- python-3.x - Python - 满足条件时未发送电子邮件
- c - 不可理解的指针错误
- google-apps-script - 使用 FormResponse.getEditResponseUrl 时无法编辑响应错误
- system-verilog - 将模块作为类型传递
- python - 计算具有特定值的元素在不同列中的出现次数
- google-sheets - 如何从 ImportXML 函数永久更新值