日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

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

?

分組top問題

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

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

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

解答1:巧用臨時變量

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

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

前后記錄關(guān)聯(lián)——求次日留存

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

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

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

解答:

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 ,????????--?查出當(dāng)前記錄用戶,下一次訪問日期????????(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");

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。