国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

計(jì)算註冊日期 X 天內(nèi)發(fā)生「購買」事件的「已註冊」條目數(shù)(按日期分組)
P粉308783585
P粉308783585 2023-09-11 19:48:31
0
1
752

我有一個(gè)這樣的表:

<表類=“s-表”> <標(biāo)題> id 時(shí)間戳 電子郵件 ip 事件 <正文> 1 2021-07-15 00:01:00 demo@demo.com 11.11.11.11 註冊 2 2021-07-15 00:04:00 demo@demo.com 11.11.11.11 購買 3 2021-07-15 00:07:00 test@test.com 22.22.22.22 註冊 4 2021-07-15 00:08:00 someone@else.com 33.33.33.33 註冊 5 2021-07-16 00:01:00 test@test.com 22.22.22.22 購買 6 2021-07-16 00:02:00 someone@else.com 33.33.33.33 購買

追蹤所有使用者的電子郵件、IP、日期/時(shí)間和事件(註冊和購買)。

現(xiàn)在,我正在嘗試對 a) 註冊和 b) 轉(zhuǎn)換進(jìn)行每日統(tǒng)計(jì)(註冊後 7 天內(nèi)發(fā)生的購買,分配給該電子郵件/IP 的初始註冊日期,而不是購買日期)。

我可以輕鬆計(jì)算出a) 註冊...但試圖弄清楚如何查詢7 天內(nèi)的轉(zhuǎn)化,然後將每個(gè)註冊的轉(zhuǎn)化分配給註冊日期(而不是轉(zhuǎn)化日期,這很容易) ,事實(shí)證明這是一個(gè)相當(dāng)大的挑戰(zhàn)。

這是我迄今為止的查詢:

選擇日期(時(shí)間戳)作為日期,
SUM(CASE WHEN event = '注冊' THEN 1 ELSE 0 END) AS 注冊,
SUM(CASE WHEN event = '購買' THEN 1 ELSE 0 END) AS 轉(zhuǎn)化
來自點(diǎn)擊跟蹤
哪里日期(時(shí)間戳)<='2021-07-31'
和日期(時(shí)間戳)>='2021-07-01'
按日期分組
按日期排序

這給了我以下結(jié)果:

<表類=“s-表”> <標(biāo)題> 日期 註冊 轉(zhuǎn)化 <正文> 2021-07-15 3 1 2021-07-16 0 2

我理想中需要的是這樣的(3 個(gè)購買事件與 15 日的 3 個(gè)註冊事件相關(guān)聯(lián),因此為什麼 3 個(gè)轉(zhuǎn)換被分配給 15 日,而沒有分配給 16 日):

<表類=“s-表”> <標(biāo)題> 日期 註冊 轉(zhuǎn)化 <正文> 2021-07-15 3 3 2021-07-16 0 0

有道理嗎?

請記住,這個(gè) click_tracking 表的大小有一百萬或兩條記錄,而且我已經(jīng)多次嘗試在其自身上使用 JOINS 使其崩潰,因此並非任何查詢都可以執(zhí)行...

知道如何有效地解決這個(gè)問題並更改我的查詢來完成這個(gè)任務(wù)嗎?

P粉308783585
P粉308783585

全部回覆(1)
P粉884667022

您需要視窗函數(shù)來執(zhí)行此類查詢:

與組合 AS (
  選擇日期(時(shí)間戳)作為日期0,
  電子郵件,
  FIRST_VALUE(事件) OVER(按電子郵件分區(qū) ORDER BY 當(dāng)前行和 0 個(gè)后續(xù)行之間的時(shí)間戳行) AS event1,
  NTH_VALUE(事件,2) OVER(按電子郵件分區(qū) ORDER BY 當(dāng)前行和后續(xù) 1 行之間的時(shí)間戳行) AS event2,
  FIRST_VALUE(日期(時(shí)間戳)) OVER(按電子郵件分區(qū) ORDER BY 1 PRECEDING AND 1 FOLLOWING 之間的時(shí)間戳行) AS date1,
  NTH_VALUE(DATE(時(shí)間戳),2) OVER(按電子郵件分區(qū) ORDER BY 1 PRECEDING AND 1 FOLLOWING 之間的時(shí)間戳行) AS date2
來自點(diǎn)擊跟蹤
WHERE 時(shí)間戳位于“2021-07-01 00:00:00”和“2021-07-30 23:59:59”之間)
選擇日期 0 作為日期,
  SUM(CASE WHEN event1='注冊' THEN 1 ELSE 0 END) AS 注冊,
  SUM(CASE WHEN event1='注冊' AND event2='購買' AND DATEDIFF(date2,date1) 

假設(shè)對於每封電子郵件,第一筆記錄始終是註冊,第二筆記錄(如果有)始終是購買,您將獲得該電子郵件的類型和日期一次記錄前2 筆記錄。然後,您可以輕鬆地分別統(tǒng)計(jì)註冊和購買量,同時(shí)套用附加篩選條件,使 2 個(gè)事件之間的間隔不超過 7 天。

如果您在 timestamp 上有一個(gè)鍵,那麼即使有 100 萬行,查詢也應(yīng)該足夠快。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板