SQL獲取使用者第一次登陸的裝置號

2021-10-02 09:53:58 字數 1573 閱讀 3843

sql獲取使用者第一次登陸的裝置號

有如下一張表

p_id    d_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_id    d_id

1       2

2       3

3       1

解答:首先聯想到的是row_number函式進行排序,然後獲取排名第一的資料,查詢sql如下:

第一步:對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

第二步:獲取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

) awhere rn = 1;

結果:

p_id    d_id

1       2

2       3

3       1

備註:建表和資料

create table test_01 (p_id int,d_id int,event_date date,g_p int);

insert into test_01 values(1,2,'2019-08-01',5);

insert into test_01 values(1,2,'2019-09-01',8);

insert into test_01 values(2,3,'2020-01-01',1);

insert into test_01 values(3,1,'2019-03-01',9);

insert into test_01 values(3,5,'2020-01-03',6);

第一次機房收費系統 登陸窗體

前言 不管是學生還是機房,敲的第乙個窗體都是登入,這兩個學習專案有很大的相同點,學生有原始碼,機房卻沒有,需要搞清楚裡邊的邏輯,問題也就迎刃而解了。下面是我畫的機房的流程圖 如下 option explicit private declare function getusername lib adv...

第一次機房收費系統之登陸窗體

3.executesql函式 和 call 呼叫 executesql他是一種自定義函式,是odbc中的乙個api函式,用來執行由sqlprepare建立的sql語句。一般只要是查詢資料表就會用到這個函式,他後面一般還加兩個引數txtsql和msgtext。今天我們就來看看這三個單詞在資料庫語言中的...

第一次登陸jenkins頁面空白解決方案

之前搭建了幾次jenkins環境都沒問題,最近換了工作,再次搭建jenkins用的是docker部署 前面都沒問題。到最後安裝完外掛程式,設定了第乙個使用者,登陸之後頁面呈現空白 解決方案 瀏覽器訪問 登陸之後將頁面下拉到底部將公升級站點的https改為http之後提交 重啟jenkins 方法一 ...