[英]Finding most frequent value and doing a join
所以我現在真的很掙扎,到處都是我幾乎找不到的答案,所以我在尋找一些指導。
我需要收集出現在task_tbl中最頻繁出現的task_name,然后我需要找出job_tbl中使用該任務的所有作業(請注意,task_tbl中的每個值都有對job_tbl的外鍵引用)
這段代碼是我目前擁有的代碼,它將成功返回最常看到的task_name,但是我仍然不確定如何找出使用此任務的所有作業。
select task_name
from
(select task_name, count(1)
from task_tbl
group by task_name
order by count(1) desc) a
where rownum = 1;
應該這樣做:
select j.job_name
from job_tbl j
join task_tbl t
on t.job_fk = j.job_id
where t.task_name in ( <your query> );
假設job_id是job_tbl的主鍵,job_fk是task_tbl的外鍵列,而job_name是要從job_tbl獲取的列。
您可能需要這樣的東西。
SELECT *
FROM job_tbl j
WHERE EXISTS (SELECT 1
FROM (SELECT task_name
FROM (SELECT task_name,
Count(1),
ROWNUM rn
FROM task_tbl
GROUP BY task_name
ORDER BY Count(1) DESC) a
WHERE rn = 1) b
WHERE b.task_name = j.task_name) ;
如其中一項注釋中所建議,如果使用的是Oracle 12c,則還有另一種選擇。 上面查詢中的內聯視圖a
可以替換為
SELECT task_name,
COUNT(1)
FROM task_tbl
GROUP BY task_name
ORDER BY COUNT(1) desc
FETCH first 1 ROWS only
排除rn = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.