gpt4 book ai didi

mysql - 一对多加入聚合函数(最大)

转载 作者:行者123 更新时间:2023-11-29 02:50:17 26 4
gpt4 key购买 nike

我有两个表。

表 1:

+---------+---------+
| Lead_ID | Deal_ID |
+---------+---------+
| 2323 | null |
| 2324 | 1199 |
| 2325 | null |
| 2326 | null |
| 2327 | 1080 |
+---------+---------+

表 2:

+---------+-------------+-------------+------------+
| Deal_ID | Stage_From | Stage_To | ChangeDate |
+---------+-------------+-------------+------------+
| 1199 | incoming | stage1 | 01-Dec-14 |
| 1199 | stage1 | incoming | 05-Dec-14 |
| 1199 | incoming | stage1 | 12-Dec-14 |
| 1080 | incoming | unqualified | 06-Dec-14 |
| 1080 | unqualified | stage2 | 07-Dec-14 |

我想为表 2 中有记录的每个 Deal_ID 添加“ChangeDate”,其中阶段从“Incoming”更改为“Stage1”。如果阶段多次从“incoming”变为“stage1”,我想要最大日期,即示例中的 2014 年 12 月 12 日,而不是 2014 年 12 月 1 日。

结果表应该是:

+---------+---------+------------+
| Lead_ID | Deal_ID | ChangeDate |
+---------+---------+------------+
| 2323 | null | null |
| 2324 | 1199 | 12-Dec-14 |
| 2325 | null | null |
| 2326 | null | null |
| 2327 | 1080 | null |
+---------+---------+------------+

我查看了一些推荐使用“Group_Concat”的类似问题,但我无法通过该方法得到我想要的结果。

非常感谢任何建议。

最佳答案

这是查询:

SELECT 
T.Lead_ID,
T.Deal_ID,
DATE_FORMAT(TT.maxChangeDate,'%d-%b-%y') AS ChangeDate
FROM Table1 T
LEFT JOIN
(

SELECT
Deal_ID,
MAX(ChangeDate) maxChangeDate
FROM Table2
WHERE Stage_From = 'incoming'
AND Stage_To = 'stage1'
GROUP BY Deal_ID ) TT
ON TT.Deal_ID = T.Deal_ID;

SQL FIDDLE DEMO

输出:

Lead_ID Deal_ID ChangeDate
2323 (null) (null)
2324 1199 12-Dec-14
2325 (null) (null)
2326 (null) (null)
2327 1080 (null)

解释:

让我们看看下面的查询(在上述查询的 TT block 内)

   SELECT 
Deal_ID,
MAX(ChangeDate) maxChangeDate
FROM Table2
WHERE Stage_From = 'incoming'
AND Stage_To = 'stage1'
GROUP BY Deal_ID;

此查询获取每个 Deal_ID 的最新 changeDate,如果它们有 incomingstage1 作为 分别为 Stage_FromStage_To

所以这个查询返回以下结果:

Deal_ID    maxChangeDate
1199 2014-12-12

现在,如果您在 Table1 和此结果之间进行 LEFT JOIN,那么您将得到 Table1 的每个条目都具有相应的 maxChangeDate紧跟在 Lead_ID 和 Deal_ID 之后。

关于mysql - 一对多加入聚合函数(最大),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36707303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com