日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 统计_mysql数据统计级别技巧

發布時間:2025/3/20 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 统计_mysql数据统计级别技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文提及技巧只適用數據統計,OLAP場景,不建議用于業務sql。

?

分組top問題

知識點:巧用局部變量,實現Hive窗口分析函數功能row_number() over(partition by exam_id)

題目:如下表,記錄每個學生的成績,用sql求出每班前五名的學生id和成績。

create?table?student( id?int(11)?comment?"學生id", class?int(3)?comment?"班級", score?int(3)? comment "成績");

解答1:巧用臨時變量

劃重點:mysql的臨時變量賦值順序是:from --> select,select子句字段按從上到下順序執行。

select id, class, scorefrom ( select id, class , score, if(@cur_class <> class, @seq:=0, null) temp_seq, if(@cur_class=class and @last_score <> score,@seq:=@seq+1,@seq) as seq , @cur_class:=class, @last_score:=score from student a ,(select @cur_class:=0,@seq:=0, @last_score:=0) t0 order by class asc , score desc)?t1?where?t1.seq?<= 5;

解答2:使用子查詢

select t1.id, t1.class, t1.scorefrom student t1where ??(select?count(1)?c?from?student?t2?where?t2.class?=?t1.class?and?t2.score?>=?t1.score?)?<=?5

前后記錄關聯——求次日留存

題目:如下表,記錄用戶訪問流水,求次日留存率。

create?table?visit_log( userId?int(20)?comment?"用戶id",??visitDate?datetime?comment?"訪問時間");

思路:次日留存率 = 交集(當天訪問用戶?和?下一天訪問用戶)/?當天訪問用戶數

解答:

select????date_format(visitDate,?"%Y-%m-%d")?as?`日期`,????count(distinct?if(date_format(user_next_date,?"%Y-%m-%d")) =?date_format(date_add(visitDate,interval 1 day), "%Y-%m-%d"),uid?,?null?))?????/?count(distinct?uid?)?as??`次日留存率`from ( select visitDate, uid ,????????--?查出當前記錄用戶,下一次訪問日期????????(select?min(visitDate)?from?visit_log?where?date_add(date_format(a.visitDate ,?"%Y-%m-%d 00:00:00"),interval 1 day)?and?a.userId?=?userId?)? from visit_log a ) a group by date_format(visitDate, "%Y-%m-%d");

總結

以上是生活随笔為你收集整理的mysql 统计_mysql数据统计级别技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。