1

我有一个有 4 列的表:

ID, USER_ID, SOURCE,CREATED_DATE

该表中有以下数据:

ID  USER_ID SOURCE          CREATED_DATE
1   25      PURCHASE        2012-01-01 12:30:00
2   26      PLEDGE          2012-01-01 12:40:00
3   25      PLEDGE          2012-01-01 12:50:00
4   25      PURCHASE        2012-01-14 12:00:00

现在如您所见,我有 4 行数据和两个唯一用户。用户 (25) 进行了 3 笔交易(两笔购买和一笔质押),用户 (26) 进行了一笔交易 - (一笔质押)

这是我想要实现的目标:

我需要从此表中选择所有事务,但我想为每个请求类型(源)选择一个唯一用户,并且该行需要是最早的事务。

我的预期结果数据将是:

ID  USER_ID SOURCE          CREATED_DATE
1   25      PURCHASE        2012-01-01 12:30:00
2   26      PLEDGE          2012-01-01 12:40:00
3   25      PLEDGE          2012-01-01 12:00:00

用户 (25) 进行了两次购买(一次在 2012 年 1 月 1 日,一次在 2012 年 1 月 14 日)——第一次是被退回的。

这是我到目前为止提出的SQL:

    SELECT 
        Supporter.user_id,
        MIN(Supporter.created) as created,
        Supporter.*,
        Supporter.source
    FROM
        supporters AS Supporter

    GROUP BY Supporter.source
    ORDER BY Supporter.created ASC

现在,这让我非常接近,除了它只选择一个用户 ID(一个有两个项目 - 承诺和购买)。如果我能弄清楚如何选择两个用户的数据,那将是我需要做的!谁能看到我在这里可能做错了什么,或者错过了什么?

4

1 回答 1

1

您需要按来源和用户 ID 分组

像这样的东西

SELECT 
    Supporter.user_id,
    MIN(Supporter.created) as created,
    Supporter.*,
    Supporter.source
FROM
    supporters AS Supporter

GROUP BY Supporter.user_id, Supporter.source
ORDER BY Supporter.created ASC
于 2012-05-15T20:00:58.143 回答