使用者行為分析,指定操作順序
使用者行為表tracking_log
使用者id | 操作編號 | 操作時間 |
---|---|---|
user_id | opr_id | log_time |
- 計算每天的訪客數和他們的平均操作次數。
select date(log_time), count(distinct user_id) as 訪客數量,
count(opr_id) as 操作次數, count(opr_id) / count(distinct user_id) as 平均操作次數
from tracking_log
group by date(log_time)
- 統計每天符合以下條件的使用者數:A操作之後是B操作,AB操作必須相鄰。
select date(log_time), sum(distinct user_id)
from
(select date(log_time), user_id, log_time, opr_id,
(lead(opr_id) over(partition by date(log_time), user_id order by log_time) as next_oprid
from tracking_log) as r
where r.opr_id = 'A' and r.next_oprid = 'B'
group by date(log_time)
1.首先使用視窗函式lead(opr_id) over(partition by date(log_time), user_id order by log_time)將每一個opr_id的下一個opr_id取出來,作為子表
2.然後使用where 篩選出opr_id為‘A’和下一個opr_id為‘B’的記錄
3.最後按日期進行分組,統計每天有AB操作的使用者數量
不正之處請大家指教
相關文章
- JavaScript執行順序分析JavaScript
- 欄位按照指定 ID 順序進行排序排序
- 進行List集合去重操作,分為保持原List集合元素順序和不保持原順序
- 測試平臺-unittest 指定順序執行用例
- 路考指南—駕駛操作順序
- 順序佇列基本操作佇列
- MySQL 按指定 ID 順序返回結果MySql
- Mysql按指定 ID 順序返回結果MySql
- 順序棧的簡單操作
- 順序棧、鏈棧基本操作
- Sql執行順序SQL
- linux 中實現資料按照指定行號順序輸出Linux
- MySQL按指定順序排序(order by field的使用)MySql排序
- python pandasDataframe按指定index名或columns名(行名或列名)順序修改輸出內容的排列順序PythonIndex
- C++ 順序容器大小操作 resizeC++
- 任務執行順序
- for語句執行順序
- JavaScript的執行順序JavaScript
- laravel Event執行順序Laravel
- Windows XP 指定啟動專案的順序(轉)Windows
- C++ 順序容器的刪除操作C++
- sql mysql 執行順序 (4)MySql
- SQL語句執行順序SQL
- js執行順序Event LoopJSOOP
- JavaScript for迴圈 執行順序JavaScript
- JavaScript 執行順序淺析JavaScript
- MySQL 查詢常用操作(0) —— 查詢語句的執行順序MySql
- mySQL 執行語句執行順序MySql
- 能否在Oracle資料庫表中指定列順序OKOracle資料庫
- 聊一下Button事件、命令、行為的觸發順序事件
- 關於JAVA中順序IO的基本操作Java
- C++操作符的優先順序C++
- [RDMA] RDMA的不同操作是否保證順序?
- Unity3D中指令碼的執行順序和編譯順序Unity3D指令碼編譯
- 類的例項化順序和分析
- 關於 Promise 的執行順序Promise
- Spring Aop的執行順序Spring
- js解惑-函式執行順序JS函式