2016-02-06 56 views
0

我需要選擇我已經達到的最大聚合數的「作業角色描述」。表格如下所示。SQL選擇最大聚合記錄

[Job Role Description] | [Number Of Placements] 
------------------------------------------------ 
Training BI      24 
System Analyst     23 
Data Analyst     24 
Data consultant     25 
DB programmer     24 

job_role_desc列是從由job_role_id加入另一個表。我使用下面的代碼來實現這一點。

SELECT 
    job_role_dim.job_role_desc AS "Job Role Description" , 
    SUM(fact_accounts.no_of_placements) AS "Number Of Placements" 
FROM 
    fact_accounts 
INNER JOIN 
    job_role_dim ON job_role_dim.job_role_id = fact_accounts.fk3_job_role_id 
GROUP BY 
    job_role_dim.job_role_desc 

如何修改上面的代碼僅顯示有廣告刊登位置的最大數量的job_role_desc?感謝您的幫助。

回答

2

您可以使用row_number()dense_rank()

SELECT ja.* 
FROM (SELECT j.job_role_desc AS "Job Role Description" , 
      SUM(a.no_of_placements) AS "Number Of Placements", 
      ROW_NUMBER() OVER (ORDER BY SUM(a.no_of_placements) DESC) as seqnum 
     FROM fact_accounts a INNER JOIN 
      job_role_dim j 
      ON j.job_role_id = a.fk3_job_role_id 
     GROUP BY j.job_role_desc 
    ) ja 
WHERE seqnum = 1; 

如果你想所有版本最大,然後用dense_rank()rank()

+0

謝謝。有沒有辦法只選擇沒有no_of_placements或row_number的job_role_desc? – DazedNConfused

+0

@DazedNConfused。 。 。是的,只需將你想要的列放在外部'select'而不是'*'中。 –

+0

非常感謝! – DazedNConfused