Я использую Oracle SQL и хочу написать запрос, который будет отображать сведения о клиенте (ах), которые ссылаются на максимальное количество клиентов. Может быть более одного клиента (если максимальное количество рефералов для каждого клиента равно).
В таблице CUSTOMER
, содержащей CUS_ID, CUS_NAME, CUS_REFERRED
, я могу получить CUS_REFERRED
и COUNT(CUST_REFERRED)
, используя:
select CUST_REFERRED, count(CUST_REFERRED)
from CUSTOMER
group by CUST_REFERRED
having count(CUST_REFERRED) = (select max(MYCOUNT)
from (select cust_referred,
count(CUST_REFERRED) MYCOUNT
from CUSTOMER
group by CUST_REFERRED));
Пример данных:
Cust_Num Cust_FName Cust_Referred
------------------------------------------------
1000 Patricia (null)
1001 Jim 1000
1002 Zoe 1003
1003 John (null)
1004 Marie 1003
1005 Anthony 1002
1006 Jodee 1003
Токовый выход:
CUST_REFERRED COUNT(C.CUST_REFERRED)
------------- ----------------------
1003 3
Желаемый выход:
CUST_FNAME CUST_REFERRED COUNT(C.CUST_REFERRED)
---------- ------------- ----------------------
John 1003 3
Где Джон является клиентом 1003 и имеет наибольшее количество рефералов (3). Если другой человек (скажем, Джек) также сделал 3 рефералов, он также был бы в списке.
Однако всякий раз, когда я пытаюсь добавить CUS_FNAME
- я получаю 'не возвращено ни одной строки' (если это основной запрос на выборку) или список клиентов с 1 рефералом (во вложенном запросе на выборку).
Любая помощь высоко ценится!