Самостоятельное присоединение без группировки с использованием аналитики - PullRequest
0 голосов
/ 21 декабря 2018

Я создаю программу с целью возврата первой записи, удовлетворяющей ряду условий.

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

Возможно ли усовершенствовать приведенный выше запрос, чтобы избежать самосоединения в одной таблице?Могу ли я использовать аналитику с условием?Производительность - это проблема, и я хотел бы максимально оптимизировать запрос.

1 Ответ

0 голосов
/ 21 декабря 2018

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...