ユーザーの最初のログインのデバイス番号を取得するSQL

SQLは、ユーザーの最初のログインのデバイス番号を取得します。
次の表があります
。p_idd_id event_date g_p
1 2 2019-08-01 5
1 2 2019-09-01 8
2 3 2020-01-01 1
3 1 2019- 03-01 9
3 5 2020-01-03 6
p_idが初めてログインするデバイスのd_idを取得すると、返される結果は次のようになります
。p_idd_id
1 2
2 3
3 1

回答:
まず、並べ替え用のrow_number関数を考えてから、最初にランク付けされたデータを取得します。クエリSQLは次のとおりです。
ステップ1:p_idフィールドをグループ化して並べ替えます

SELECT p_id
      ,d_id
      ,event_date
      ,row_number () over (PARTITION BY p_id ORDER BY event_date) AS rn
  FROM test_01

結果:
p_id d_id event_date rn
1 2 2019-08-01 1
1 2 2019-09-01 2
2 3 2020-01-01 1
3 1 2019-03-01 1
3 5 2020-01-03 2

ステップ2:rn = 1でデータを取得する

SELECT p_id
      ,d_id
  FROM(
       SELECT p_id
             ,d_id
             ,event_date
             ,row_number ( ) over ( PARTITION BY p_id ORDER BY event_date ) AS rn
         FROM test_01
       ) a
 WHERE rn = 1;

結果:
p_id d_id
1 2
2 3
3 1

 

備考:テーブルの作成とデータの
作成テーブルtest_01(p_id int、d_id int、event_date date、g_p int);

test_01に挿入values(1,2、 '2019-08-01'、5);
test_01に挿入values(1,2、 '2019-09-01'、8);
test_01に挿入values(2,3、 '2020-01-01'、1);
test_01に挿入values(3,1、 '2019-03-01'、9);
test_01に挿入values(3,5、 '2020-01-03'、6);

 

おすすめ

転載: blog.csdn.net/debimeng/article/details/104098384