1

4列のテーブルがあります:

IDUSER_IDSOURCECREATED_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 行のデータと 2 人の一意のユーザーがあります。ユーザー (25) は 3 回の取引 (2 回の購入と 1 回の誓約) を行い、ユーザー (26) は 1 回の取引を行いました – (1 回の誓約)

これが私が達成しようとしていることです:

このテーブルからすべてのトランザクションを選択する必要がありますが、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) は 2 回購入しました (1 回は 2012 年 1 月 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 の 1 つ (誓約と購入の 2 つの項目を持つもの) のみが選択されることを除いて、これは非常によくわかります。両方のユーザーのデータを選択する方法を理解できれば、それが私がしなければならないことです! ここで私が間違っている、または行方不明になっている可能性があることを誰かが見ることができますか?

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 に答える