有 2 張表,user 表和 action 表。
user 表的結構是這樣的。
id user_name alias
at8c zhangsan 張三
cfy6 lisi 李四
d1yt wangwu 王五
dt9p zhaoliu 趙六
...
action 表的結構是這樣的。
user_id event date
at8c 登入 2020-08-01 18:52:23.46
at8c 注銷 2020-08-01 20:52:23.46
cfy6 登入 2020-08-02 18:52:23.46
cfy6 注銷 2020-08-01 20:52:23.46
d1yt 登入 2020-09-03 18:52:23.46
d1yt 注銷 2020-09-03 20:52:23.46
...
比如,我現在想查 8月份,每個用戶登入了多少次,如何查詢呢?
我想要這樣的查詢結果
序號 賬號 姓名 登入次數
1 zhangsan 張三 25
2 lisi 李四 19
3 wangwu 王五 17
4 zhaoliu 趙六 0
5 qianqi 錢七 0
...
我想要的這個結果有幾個疑問,第一個疑問,原來的表里邊是沒有序號的,查詢出來的結果中需要增加這個序號,方便查看賬號的數量;第二個問題,這個登入次數是倒序排列的,登入最頻繁的人在上邊,如果某個用戶沒有登入過的話比如趙六正常情況下登入次數那里應該是空的,沒有內容,但是這里希望沒有登入過的也顯示出0。
要使用什么樣的陳述句才能得到我想要的結果呢?
uj5u.com熱心網友回復:
group by 賬號, 再count登錄次數uj5u.com熱心網友回復:
select row_number() over(order by b.cnt desc) as 序號,a.user_name as 賬號,a.alias as 姓名,b.cnt as 登入次數
from [user] a
left join (
select user_id,count(0) as cnt
from [action]
where event='登入'
-- and [date] between '2020-8-1' and '2020-9-1'
group by user_id
) b on a.id=b.user_id
uj5u.com熱心網友回復:
row_number一下,然后再分組匯總轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/8396.html
標籤:基礎類
上一篇:求sql的
下一篇:這個sql復雜嗎。。怎么搞
