根据列中的最大值选择分组记录
Selecting Grouped Records based on max value in a column
我无法理解这个问题,我有一个 "funcky" 子查询:
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";
这基本上给了我一个有 7 列的 table。我需要一个具有相同 7 列的结果,前 3 列是 GROUPED,其中最后一列是 Max。例如。如果原始子查询显示我:
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
在这种情况下,我只想查看此示例的第一行...所以我想分组
"Requisition_ID",
"Candidate_ID",
"Application_Date"
还可以查看这些值的用途:
CA."Process_of_Activity",
CA."Activity",
"Completed_on"
其中 "Current Completed on" 是最大值。
但当然还有更多的申请、候选人和系统中的申请日期。我正在使用 dashDB。
您可以使用 row_number/rank/dense_rank 来达到这个目的。您需要如下内容:
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
此 SQL 未在 dasdb 上编译,但 row_number 功能很重要。它会给你想法。
我无法理解这个问题,我有一个 "funcky" 子查询:
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";
这基本上给了我一个有 7 列的 table。我需要一个具有相同 7 列的结果,前 3 列是 GROUPED,其中最后一列是 Max。例如。如果原始子查询显示我:
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
在这种情况下,我只想查看此示例的第一行...所以我想分组 "Requisition_ID", "Candidate_ID", "Application_Date"
还可以查看这些值的用途: CA."Process_of_Activity", CA."Activity", "Completed_on"
其中 "Current Completed on" 是最大值。 但当然还有更多的申请、候选人和系统中的申请日期。我正在使用 dashDB。
您可以使用 row_number/rank/dense_rank 来达到这个目的。您需要如下内容:
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
此 SQL 未在 dasdb 上编译,但 row_number 功能很重要。它会给你想法。