我使用子查询得到了关于Oracle SQL的问题。
使用如下所示的表格
问题是。
“编写一个查询,显示引用最大客户数量的客户。”
执行此代码时,您可以看到具有最大引用数的客户
SELECT cust_referred, COUNT(*)
FROM customer
WHERE cust_referred IS NOT NULL
GROUP BY cust_referred;
我认为我需要将cust_num(上一个表)与cust_referred匹配,最大引用数为1003,其中包含3个。
答案 0 :(得分:0)
如果我已正确理解您的问题,我认为这就是您正在寻找的
select
cust_num,
count(cust_refferred)
from
customer
where cust_referred IS NOT NULL
group by cust_num
order by 2 desc
答案 1 :(得分:0)
cust_referred
是进行推荐的客户。所以你想要的基本查询是
SELECT cust_referred
, COUNT(*) as referrals
FROM customer
WHERE cust_referred IS NOT NULL
GROUP BY cust_referred
;
现在它成为一个前n个问题。
"如果有多个最大数字,我就不能选择一个。"
在Oracle 12c中有一个奇妙的FETCH子句,它使这很简单:
SELECT cust_referred
, COUNT(*) as referrals
FROM customer
WHERE cust_referred IS NOT NULL
GROUP BY cust_referred
order by 2 desc
fetch first 1 rows with ties;
这(狡猾的英语语法,但合法的Oracle 12c)将返回引用次数最多的cust_refered
,或者如果存在平局则返回所有引用。
在早期的Oracle版本中,有几种不同的实现,但它们都很笨拙。例如:
with cte as (
SELECT cust_referred
, COUNT(*) as referrals
FROM customer
WHERE cust_referred IS NOT NULL
GROUP BY cust_referred
)
select *
from cte
where cte.referrals = ( select max(referrals) from cte)
/