牛客題霸-SQL大廠面試真題(一)

本文基于前段時間學習總結的 MySQL 相關的查詢語法,在牛客網找了相應的 MySQL 題目進行練習,以便加強對于 MySQL 查詢語法的理解和應用。

由于涉及到的數據庫表較多,因此本文不再展示,只提供 MySQL 代碼與示例輸出。

以下內容是牛客題霸-SQL大廠面試真題(抖音短視頻 1-6 題、百度信息流 1-5 題)的 MySQL 代碼答案。


SQL 156:查詢 2021 年里有播放記錄的每個視頻的完播率(結果保留三位小數),并按照完播率降序排列

select b.video_id,
round(avg(if(timestampdiff(second, start_time, end_time) >= duration, 1, 0)), 3) as avg_comp_play_rate
from tb_user_video_log a
left join tb_video_info b
on a.video_id = b.video_id
where year(start_time) = 2021
group by 1
order by 2 desc

在這里插入圖片描述

SQL 157:查詢各類視頻的平均播放進度,將進度大于 60% 的類別輸出(結果保留兩位小數),并按照播放進度降序排列

select tag,
concat(round(avg(if(timestampdiff(second, start_time, end_time) >= duration, 1, 
timestampdiff(second, start_time, end_time)/duration))*100, 2), '%') as avg_play_progress
from tb_user_video_log a
join tb_video_info b
on a.video_id = b.video_id
group by 1
having avg(if(timestampdiff(second, start_time, end_time) >= duration, 1, 
timestampdiff(second, start_time, end_time)/duration)) > 0.6
order by 2 desc

在這里插入圖片描述

SQL 158:查詢在有用戶互動的最近一個月(按包含當天在內的近30天算,比如10月31日的近30天為10.2~10.31之間的數據)中,每類視頻的轉發量和轉發率(保留3位小數),并按照轉發率降序排列

select tag,
sum(if_retweet) as retweet_cut,
round(sum(if_retweet)/count(a.video_id), 3) as retweet_rate
from tb_user_video_log a
join tb_video_info b
on a.video_id = b.video_id
where datediff((select max(start_time) from tb_user_video_log), start_time) <= 29
group by 1
order by 3 desc

在這里插入圖片描述

SQL 159:查詢 2021 年里每個創作者每月的漲粉率及截止當月的總粉絲量,并按照創作者 ID,總粉絲量升序排列

select author, left(start_time, 7) as month,
round(sum(follow_fans_change)/count(1), 3) as fans_growth_rate,
sum(sum(follow_fans_change)) over(partition by author order by left(start_time, 7)) as total_fans
from(select b.video_id, author, start_time,case when if_follow = 1 then 1when if_follow = 2 then -1when if_follow = 0 then 0else -1000 end as follow_fans_changefrom tb_user_video_log ajoin tb_video_info bon a.video_id = b.video_id
) c
where year(start_time) = 2021
group by 1, 2
order by 1, 4

在這里插入圖片描述

SQL 160:查詢 2021 年國慶頭 3 天每類視頻每天的近一周總點贊量和一周內最大單天轉發量,并按照視頻類別降序排列,日期升序排列

with a as(select tag, left(start_time, 10) as dt,sum(if_like) as like_cnt,sum(if_retweet) as retweet_cntfrom tb_user_video_log t1left join tb_video_info t2on t1.video_id = t2.video_idgroup by 1, 2
),
b as(select tag, dt,sum(like_cnt) over(partition by tag rows between 6 preceding and current row) as sum_like_cnt_7d,max(retweet_cnt) over(partition by tag rows between 6 preceding and current row) as max_retweet_cnt_7dfrom a
)select tag, dt, sum_like_cnt_7d, max_retweet_cnt_7d
from b
where dt in('2021-10-01', '2021-10-02', '2021-10-03')
order by 1 desc, 2

在這里插入圖片描述

SQL 161:查詢近一個月發布的視頻中熱度最高的 top3 視頻

select video_id,
round((avg(if_complete) * 100 + sum(if_like) * 5 + sum(if_comment) * 3 + sum(if_retweet) * 2) * (1 / (1 + min(diff_time)))) as hot_index
from(selecta.video_id as video_id,if(timestampdiff(second, start_time, end_time) >= duration, 1, 0) as if_complete,if_like, if_retweet,if(comment_id is null, 0, 1) as if_comment,datediff((select max(end_time) from tb_user_video_log), end_time) as diff_timefrom tb_user_video_log aleft join tb_video_info bon a.video_id = b.video_idwhere datediff((select max(end_time) from tb_user_video_log), release_time) <= 29
) c
group by 1
order by 2 desc
limit 3

在這里插入圖片描述

SQL 162:查詢 2021 年 11 月每天的人均瀏覽文章時長(秒數),結果保留 1 位小數,并按時長由短到長升序排列

select left(in_time, 10) as dt,
round(sum(timestampdiff(second, in_time, out_time)) / count(distinct uid), 1) as avg_viiew_len_sec
from tb_user_log
where left(in_time, 7) = '2021-11' and artical_id <> 0
group by 1
order by 2

在這里插入圖片描述

SQL 163:查詢每篇文章同一時刻最大在看人數,如果同一時刻有進入也有離開時,先記錄用戶數增加再記錄減少,結果按最大人數降序排列

with a as(select uid, artical_id, in_time as dt, 1 as is_infrom tb_user_logunion allselect uid, artical_id, out_time as dt, -1 as is_infrom tb_user_log
)select artical_id, max(uv)
from(select artical_id, dt, sum(is_in) over(partition by artical_id order by dt, is_in desc) as uvfrom awhere artical_id <> 0
) b
group by 1
order by 2 desc

在這里插入圖片描述

SQL 164:統計2021年11月每天新用戶的次日留存率(保留2位小數)

with reg as(select uid, min(left(in_time, 10)) as reg_datefrom tb_user_loggroup by 1
), -- 用戶注冊表
log as(select uid, date(in_time) as log_datefrom tb_user_logunionselect uid, date(out_time) as log_datefrom tb_user_log
) -- 用戶登陸表select
reg_date as dt,
round(ifnull(count(l.uid)/count(r.uid), 0), 2) as uv_left_rate
from reg r
left join log l
on r.uid = l.uid
and r.reg_date = date_sub(l.log_date, interval 1 day)
where left(reg_date, 7) = '2021-11'
group by 1
order by 1

在這里插入圖片描述

SQL 165:統計活躍間隔對用戶分級后,各活躍等級用戶占比,結果保留兩位小數,且按占比降序排列

with a as(selectuid,date(min(in_time)) as first_date, -- 用戶注冊日期date(max(in_time)) as last_date, -- 用戶最近活躍日期(select date(max(in_time)) from tb_user_log) as todayfrom tb_user_loggroup by 1
)select
user_grade,
round(count(distinct uid) / (select count(distinct uid) from tb_user_log), 2) as ratio
from
(select uid,case when datediff(today, first_date) <= 6 then '新晉用戶'when datediff(today, first_date) > 6 and datediff(today, last_date) <= 6 then '忠實用戶'when datediff(today, first_date) > 6 and datediff(today, last_date) > 29 then '流失用戶'when datediff(today, first_date) > 6 and datediff(today, last_date) > 6 then '沉睡用戶'else '其他' end as user_gradefrom a
) b
group by 1

在這里插入圖片描述

SQL 166:統計每天的日活數及新用戶占比

with reg as(select uid, date(min(in_time)) as reg_datefrom tb_user_loggroup by 1
), -- 用戶注冊表
log as(selectuid,date(in_time) as login_datefrom tb_user_logunionselectuid,date(out_time) as login_datefrom tb_user_log
) -- 用戶登陸表select
login_date,
count(distinct l.uid) as dau,
round(count(distinct r.uid) / count(distinct l.uid), 2) as uv_new_ratio
from log l
left join reg r
on l.uid = r.uid
and l.login_date = r.reg_date
group by 1
order by 1

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17746.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17746.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17746.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

抖店類目錯放怎么辦?怎么改類目?快速解決抖店類目錯放問題

大家好&#xff0c;我是電商花花。 我們運營抖音小店的時候&#xff0c;都知道不要放錯類目&#xff0c;也知道放錯類目的后果&#xff0c;類目錯放可能導致商品無法在正確的類目中展示&#xff0c;從而影響到商品的一個曝光率。 嚴重的話還被平臺扣分&#xff0c;扣保證金&a…

隱藏服務器源IP怎么操作,看這一篇學會!

在當今的網絡環境中&#xff0c;服務器作為信息和服務的中樞&#xff0c;常駐于公網之上&#xff0c;面臨著各式各樣的安全威脅&#xff0c;其中&#xff0c;分布式拒絕服務&#xff08;DDoS&#xff09;攻擊尤為猖獗&#xff0c;它通過協調大量計算機同時向目標服務器發送請求…

跳繩步法匯總

跳繩步法 跳繩是一項多樣化且富有樂趣的運動&#xff0c;擁有許多不同的步法和技巧。以下是一些常見的跳繩步法&#xff1a; 1. 基本步法 雙腳并跳&#xff1a;雙腳并攏一起跳&#xff0c;每次跳繩通過腳下時雙腳同時離地。單腳跳&#xff1a;用一只腳跳&#xff0c;另一只腳…

設計一套Kafka到RocketMQ的雙寫+雙讀技術方案,實現無縫遷移!

設計一套Kafka到RocketMQ的雙寫雙讀技術方案&#xff0c;實現無縫遷移&#xff01; 1、背景2、方案3、具體邏輯 1、背景 假設你們公司本來線上的MQ用的主要是Kafka&#xff0c;現在要從Kafka遷移到RocketMQ去&#xff0c;那么這個遷移的過程應該怎么做呢&#xff1f;應該采用什…

JAVA開發面試超詳細

一、Java 基礎 1.JDK 和 JRE 有什么區別&#xff1f; jdk&#xff1a;java development kit jre&#xff1a;java runtime Environment jdk是面向開發人員的&#xff0c;是開發工具包&#xff0c;包括開發人員需要用到的一些類。 jre是java運行時環境&#xff0c;包括java虛擬機…

Selenium探險家:駕馭Web自動化的秘籍與實戰

Hi&#xff0c;我是阿佑&#xff0c;今天將帶大伙們學會如何使用Selenium進行高效的網站測試&#xff0c;如何配置Selenium Grid實現分布式測試&#xff0c;以及如何預測和擁抱自動化測試的未來&#xff01; 文章目錄 1. 引言2. 背景介紹2.1 Selenium概覽2.2 Python與Selenium的…

python數據可視化:自定義閉合區域填充顏色matplotlib.pyplot.fill()

【小白從小學Python、C、Java】 【考研初試復試畢業設計】 【Python基礎AI數據分析】 python數據可視化&#xff1a; 自定義閉合區域填充顏色 matplotlib.pyplot.fill() [太陽]選擇題 以下關于matplotlib.pyplot.fill()函數說法正確的是&#xff1f; import matplotlib.pyplo…

【ARM+Codesys案例】T3/RK3568/樹莓派+Codesys鋰電疊片機方案:結合CODESYS實現高效生產

鋰電疊片機解決方案 乘風破浪&#xff0c;促進新能源行業發展 鋰電池是依靠鋰離子在正極與負極之間移動來達到充放電目的的一種可充電電池&#xff0c;具有高能量密度、高電壓、壽命長、無記憶效應等優點。鋰電池屬于國家政策扶持的高速發展行業&#xff0c;近年發展快速&…

【Beyond Compare】專業的文件對比工具

一、Beyond Compare官方下載 二、Beyond Compare簡介 三、Beyond Compare 4激活 一、Beyond Compare官方下載 Beyond Compare官方下載 https://www.beyondcompare.cc/ Beyond Compare 4中文包 鏈接&#xff1a;https://pan.baidu.com/s/14igdUm0Xy7DFp4Jzb58AZg?pwdGLNG 提…

newinit.sh挖礦攻擊處理與規避方案

目錄 攻擊分析 恢復措施&#xff1a; 問題排查 攻擊入口分析 預防 臨時處理方案&#xff1a; 攻擊分析 攻擊者&#xff1a;職業黑客&#xff08;99%&#xff09; 攻擊方式&#xff1a;挖礦病毒newinit.sh和蠕蟲病毒pnscan 中毒現象: 服務器負載異常&#xff0c;具體表…

CTFHUB技能樹——SSRF(一)

目錄 一、SSRF(服務器端請求偽造) 漏洞產生原理: 漏洞一般存在于 產生SSRF漏洞的函數&#xff08;PHP&#xff09;&#xff1a; 發現SSRF漏洞時&#xff1a; SSRF危害&#xff1a; SSRF漏洞利用手段&#xff1a; SSRF繞過方法&#xff1a; 二、CTFHUB技能樹 SSRF 1.Ht…

結構體的偏移地址,首地址的宏計算

C語言的庫函數中提供了計算結構體的一個元素在結構體中的偏移量&#xff0c;以及通過偏移量和結構體中元素的指針計算出來結構體的首地址。但是在一些場景沒有辦法使用C語言庫中的函數&#xff0c;那么就需要自己進行定義。 如下面代碼所示的兩個宏定義就完成了計算結構體成員偏…

如何解決elment ui必填驗證輸入空格通過校驗?

很久之前有個客戶定制了一個ERP系統,里面有個單位的必填項,是沒有任何規律的字符串,也就是只需要做必填即可,結果前段時間維護該信息的換了一個人,必填的單位居然是空白,因為數據缺失的原因導致后面一系列的工作流一個都提交不了,該員工意識到自己闖禍后直接跑路,聯系不…

SQL生成序列淺析

01.sqlserver版本 使用sqlserver將數據復制n條 selectt.indx,t.name,tmp.vlue from (values(1,蘋果) ) as t(indx, name) ,(select[number] as vluefrom master.dbo.spt_valueswhere [type] pand [number] between 1 and 10 ) as tmpspt_values是什么 spt_values是SQL Se…

oracle 12c GI卸載流程

集群節點停止服務 [crsctl stop crs -f grid運行deinstall [rootprimary1 bin]# su - grid [gridprimary1 ~]$ cd $ORACLE_HOME/deinstall [gridprimary1 deinstall]$ ls bootstrap_files.lst bootstrap.pl deinstall deinstall.pl deinstall.xml jlib readme.txt …

多張圖片上傳、圖片回顯、url路徑轉成File文件

1. 實現 背景&#xff1a;在表單中使用element-plus實現多張圖片上傳(限制最多10張)&#xff0c;因為還要與其他參數一起上傳&#xff0c;所以使用formData格式。 編輯表單回顯時得到的是圖片路徑數組&#xff0c;上傳的格式是File&#xff0c;所以要進行一次轉換。 <tem…

超頻是什么意思?超頻的好處和壞處

你是否曾經聽說過超頻&#xff1f;在電腦愛好者的圈子里&#xff0c;這個詞似乎非常熟悉&#xff0c;但對很多普通用戶來說&#xff0c;它可能還是一個神秘而陌生的存在。 電腦超頻是什么意思 電腦超頻&#xff08;Overclocking&#xff09;&#xff0c;顧名思義&#xff0c;是…

PCIe (1)

計算PCIe的吞吐 PCIe吞吐依賴以下因素 >protocol overhead >payload size >completion latency >flow control update latency >characteristics of the devices that form the link Protocol Overhead 如果是8B/10B的編碼,那么需要25%的開銷。 對于Gen…

前端面試題大合集7----模塊化/工程化/ES6+標準

一、簡述webpack的核心原理 &#xff08;1&#xff09;一切皆模塊 正如JS文件可以是一個“模塊”一樣&#xff0c;其它的文件也可視作模塊。因此可以執行require(myJsFile.js)&#xff0c;亦可執行require(myCssFile.css)&#xff0c;這意味著我們可以將事物分割成更小的、易…

堆排序和Topk問題

堆排序 堆排序即利用堆的思想來進行排序&#xff0c; 總共分為兩個步驟&#xff1a; 1. 建堆 升序&#xff1a;建大堆&#xff1b; 降序&#xff1a;建小堆 2 .利用堆刪除思想來進行排序 利用堆刪除思想來進行排序 建堆和堆刪除中都用到了向下調整&#xff0c;因此掌握了…