簡體   English   中英

尋找最頻繁的價值並加入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM