我有一个包含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次)进行了一次交易 - (一次质押)
这是我想要实现的目标:
我需要从此表中选择所有事务,但我想为每个REQUEST TYPE(源)选择一个UNIQUE用户,该行必须是EARLIEST TRANSACTION。
我的预期结果数据是:
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-01-01,另一次在2012-01-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(一个有两个项目 - 承诺和购买)。如果我能弄清楚如何选择两个用户的数据,那就是我需要做的!任何人都可以在这里看到我可能做错了什么,或者丢失了吗?
答案 0 :(得分: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