[英]Selecting Grouped Records based on max value in a column
I cannot get my head around this one, I have a "funcky" subquery: 我无法理解这一点,我有一个“ funkky”子查询:
SELECT
"Requisition_ID",
"Candidate_ID",
"Application_Date",
CA."Process_of_Activity",
CA."Activity",
"Completed_on",
add_minutes(cast("Completed_on" as timestamp),STAT."Rank") as "Current Completed on"
FROM CA
left join STATUS as STAT
on CA."Process_of_Activity" = STAT."Process_of_Activity" and CA."Activity" = STAT."Activity"
GROUP BY "Requisition_ID","Candidate_ID","Application_Date", STAT."Rank", CA."Process_of_Activity", CA."Activity", "Completed_on";
This basically gives me a table with 7 columns. 这基本上给了我一张有7列的表格。 I need a result with the same 7 columns GROUPED by the first 3 where the last column is Max.
我需要一个具有相同的7列的结果,前7个列按分组,最后3列为最大。 For example.
例如。 if the original subquery shows me:
如果原始子查询显示了我:
Requisition_ID Candidate_ID Application_Date Process_of_Activity Activity Completed_on Current Completed on
123 555 16/12/2015 To be Rejected Rejection 08/03/2016 08/03/2016 00:29
123 555 16/12/2015 To be Rejected Letter:Rejection 08/03/2016 08/03/2016 00:00
123 555 16/12/2015 Application Entry Questionnaire 16/12/2015 16/12/2015 00:00
123 555 16/12/2015 Application Entry Application Entr 08/03/2016 08/03/2016 00:01
in this case I would only want to see the first line of this sample ... so I want to group by "Requisition_ID", "Candidate_ID", "Application_Date" 在这种情况下,我只希望看到此示例的第一行...因此我想按“ Requisition_ID”,“ Candidate_ID”,“ Application_Date”分组
but also see what the values are for: CA."Process_of_Activity", CA."Activity", "Completed_on" 还可以看到这些值的含义:CA.“ Process_of_Activity”,CA.“ Activity”,“ Completed_on”
where "Current Completed on" is max. 其中“当前完成日期”最大。 but of course much more Requisitions, candidates and Application dates in the system.
但系统中当然还有更多的请购单,候选人和申请日期。 I am using dashDB.
我正在使用dashDB。
You can use row_number/rank/dense_rank for this purpose. 为此,您可以使用row_number / rank / dense_rank。 You need something like following:
您需要以下内容:
SELECT *
FROM
(
SELECT "Requisition_ID",
"Candidate_ID",
"Application_Date",
"Process_of_Activity",
"Completed_on",
cco,
ROW_NUMBER()OVER(PARTITION BY "Requisition_ID",
"Candidate_ID",
"Application_Date"
ORDER BY cco DESC)rn
FROM
(
SELECT
"Requisition_ID",
"Candidate_ID",
"Application_Date",
CA."Process_of_Activity",
CA."Activity",
"Completed_on",
add_minutes(CAST("Completed_on" AS TIMESTAMP),STAT."Rank") AS "cco"
FROM CA
LEFT JOIN STATUS AS STAT
ON CA."Process_of_Activity" = STAT."Process_of_Activity" AND CA."Activity" = STAT."Activity"
GROUP BY "Requisition_ID",
"Candidate_ID",
"Application_Date",
STAT."Rank",
CA."Process_of_Activity",
CA."Activity",
"Completed_on"
) AS INNER_QUERY)AS OUTER_QUERY
WHERE rn=1
This SQL not compiled on dasdb but row_number function is important. 此SQL不在dasdb上编译,但row_number函数很重要。 it will give you idea.
它会给你的想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.