HQL面試題練習 —— 向用戶推薦好友喜歡的音樂

目錄

  • 1 題目
  • 2 建表語句
  • 3 題解

題目來源:騰訊。

1 題目


現有三張表分別為:

用戶關注表 t_follow(user_id,follower_id)記錄用戶ID及其關注的人ID,請給用戶1 推薦他關注的用戶喜歡的音樂名稱

+----------+--------------+
| user_id  | follower_id  |
+----------+--------------+
| 1        | 2            |
| 1        | 4            |
| 1        | 5            |
+----------+--------------+

用戶喜歡的音樂t_music_likes(user_id,music_id)

+----------+-----------+
| user_id  | music_id  |
+----------+-----------+
| 1        | 10        |
| 2        | 20        |
| 2        | 30        |
| 3        | 20        |
| 3        | 30        |
| 4        | 40        |
| 4        | 50        |
+----------+-----------+

音樂名字表t_music(music_id,music_name)

+-----------+-------------+
| music_id  | music_name  |
+-----------+-------------+
| 10        | a           |
| 20        | b           |
| 30        | c           |
| 40        | d           |
| 50        | e           |
+-----------+-------------+

2 建表語句


--建表語句
CREATE TABLE t_follow (
user_id bigint COMMENT '用戶ID',
follower_id bigint COMMENT '關注用戶ID'
) COMMENT '用戶關注表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
;
-- 插入數據
insert into t_follow(user_id,follower_id)
values
(1,2),
(1,4),
(1,5)
;
-- 建表語句
CREATE TABLE t_music_likes (
user_id bigint COMMENT '用戶ID',
music_id bigint COMMENT '音樂ID'
) COMMENT '用戶喜歡音樂ID'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
;
--插入語句
insert into t_music_likes(user_id,music_id)
values
(1,10),
(2,20),
(2,30),
(3,20),
(3,30),
(4,40),
(4,50)
;
--建表語句
CREATE TABLE t_music (
music_id bigint COMMENT '音樂ID',
music_name string COMMENT '音樂名稱'
) COMMENT '音樂名字表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
;
-- 插入語句
insert into t_music(music_id,music_name)
values
(10,'a'),
(20,'b'),
(30,'c'),
(40,'d'),
(50,'e')
;

3 題解


步驟一:根據用戶關注表和用戶喜歡的音樂表進行關聯,查詢出每個用戶關注用戶喜歡的音樂ID,再篩選出用戶1關注用戶喜歡的音樂ID;

selectt1.user_id,t1.follower_id,music_id
fromt_follow t1
inner joint_music_likes t2
on t1.follower_id=t2.user_id
where t1.user_id=1;

執行結果

在這里插入圖片描述

步驟二:關聯音樂名字表,關聯出對應的音樂名稱;

selectt1.user_id,t1.follower_id,t2.music_id,music_name
fromt_follow t1
inner joint_music_likes t2
on t1.follower_id=t2.user_id
inner joint_music t3
on t2.music_id=t3.music_id
where t1.user_id=1;

執行結果

在這里插入圖片描述

步驟三:行轉列并對重復的音樂名稱去重,得到最終結果。

selectt.user_id,concat_ws(",",collect_set(music_name)) push_music
from(selectt1.user_id,t1.follower_id,t2.music_id,music_namefromt_follow t1inner joint_music_likes t2on t1.follower_id=t2.user_idinner joint_music t3on t2.music_id=t3.music_idwhere t1.user_id=1)t
group by t.user_id;

執行結果

在這里插入圖片描述

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

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

相關文章

六月可以閉眼入的寵物空氣凈化器:希喂、安德邁、霍尼韋爾真實PK

俗話說得好,貓咪一年到頭都在掉毛,仿佛它們是四季常在的"蒲公英",隨時隨地都在播撒毛發。貓毛不僅遍布它們自己的身體,還可能飄到你的床鋪、沙發、衣物上……面對這樣的狀況,既要應對無處不在的貓毛&#xf…

基于卷積神經網絡(CNN)的垃圾分類模型研究

摘要: 隨著城市化進程的加快,垃圾問題日益嚴重。傳統的垃圾分類方法存在效率低下、準確率不高等問題。本文提出了一種基于卷積神經網絡(CNN)的垃圾分類模型,該模型能夠自動識別并分類不同類型的垃圾。實驗表明&#xf…

Kruskal算法求最小生成樹

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #define MAX 100 #define NO INT_MAX//NO表示沒有邊&#xff0c;相當于INFtypedef struct Graph {int arcnum;int vexnum;char vextex[MAX][20];int martrix[MAX][MA…

什么無線領夾麥克風音質最好?領夾麥克風品牌排行榜前十名推薦

?在當今的數字化浪潮中&#xff0c;個人聲音的傳播和記錄變得尤為重要。無論是會議中心、教室講臺還是戶外探險&#xff0c;無線領夾麥克風以其卓越的便攜性和連接穩定性&#xff0c;成為了人們溝通和表達的首選工具。面對市場上琳瑯滿目的無線麥克風選擇&#xff0c;為了幫助…

【Python】使用 SQLObject orm 庫快速將接口數據存入數據庫

使用 SQLObject orm 庫快速將接口數據存入數據庫 文章目錄 使用 SQLObject orm 庫快速將接口數據存入數據庫背景orm python 版本都有哪些&#xff1f; SQLObject 簡單的使用 背景 因為測試需要&#xff0c;要將百萬條數據接口查詢數據存入數據庫中&#xff0c;為了減少 mysql …

Doris insert into 插入語句執行成功,且select查詢成功,返回結果不報錯,但查不到該插入數據

問題&#xff1a;Doris insert into 正常執行成功&#xff0c;select 查詢也執行成功&#xff0c;但查不到該寫入數據 原因&#xff1a;由于有其他 insert commit 事務待提交且該任務處于鎖的狀態&#xff0c;導致不斷在回滾&#xff0c;進而造成其他的insert into 語句也執行成…

26 - 超過5名學生的課(高頻 SQL 50 題基礎版)

26 - 超過5名學生的課 select class fromCourses group byclass havingcount(*)>5;

Seed-TTS語音編輯有多強?對比實測結果讓你驚嘆!

GLM-4-9B 開源系列模型 前言 就在最近&#xff0c;ByteDance的研究人員最近推出了一系列名為Seed-TTS的大規模自回歸文本轉語音(TTS)模型,能夠合成幾乎與人類語音無法區分的高質量語音。那么Seed-TTS的表現究竟有多強呢?讓我們一起來感受下Seed-TTS帶來的驚喜吧! 介紹Seed-TTS…

Java并發包中的鎖升級

在Java中&#xff0c;特別是ReentrantLock和synchronized關鍵字的實現中&#xff0c;鎖的升級通常涉及到從無鎖狀態到偏向鎖、再升級到輕量級鎖&#xff0c;最后可能升級到重量級鎖的過程。這一系列過程是為了減少鎖帶來的開銷&#xff0c;提高并發效率。 偏向鎖&#xff08;Bi…

如何用手寫代碼實現JavaScript中的reduce函數?

在JavaScript中&#xff0c;Array.prototype.reduce() 是一個內置方法&#xff0c;它遍歷數組中的每個元素&#xff0c;并將它們累積成一個單一的返回值。我們可以自己編寫一個類似的函數來模擬這個過程。 下面是一個簡單的手寫實現例子&#xff1a; function myReduce(arr, …

組裝服務器重裝linux系統【idrac集成戴爾遠程控制卡】

&#x1f341;博主簡介&#xff1a; &#x1f3c5;云計算領域優質創作者 &#x1f3c5;2022年CSDN新星計劃python賽道第一名 &#x1f3c5;2022年CSDN原力計劃優質作者 &#x1f3c5;阿里云ACE認證高級工程師 &#x1f3c5;阿里云開發者社區專…

Vue 跨平臺性能優化十法

Vue.js 開發能夠同時運行在不同平臺&#xff08;如 Web、移動平臺和桌面平臺&#xff09;的應用程序。以下是一些常見的跨平臺解決方案&#xff1a; 1. 使用 Vue.js 官方發布的框架&#xff1a; Vue.js&#xff1a;主要用于 Web 開發。 Vue Native&#xff1a;使用 Vue 語法開…

數據結構 | 超詳細講解七大排序(C語言實現,含動圖,多方法!)

目錄 ?編輯 排序的概念 常見排序算法 ?編輯 1.冒泡排序 &#x1f379;圖解 &#x1f973;代碼實現 &#x1f914;時間復雜度 2.插入排序 &#x1f379;圖解 &#x1f334;深度剖析 &#x1f34e;代碼思路 &#x1f973;代碼實現 &#x1f914;時間復雜度 3.希爾…

2024 年適用于 Linux 的 5 個微軟 Word 替代品

對于那些最近由于隱私問題或其他原因而轉向 Linux 的用戶來說&#xff0c;可能很難替換他們最喜歡的、不在 Linux 操作系統上運行的應用程序。 尋找流行程序的合適替代品可能會成為一項挑戰&#xff0c;而且并不是每個人都準備好花費大量時間來嘗試弄清楚什么可以與他們在 Win…

讀書筆記|《把自己變成稀缺資產》:我們都擁有100分的欲望,卻只有1分的耐心。

哈嘍&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 最近在讀一本書《把自己變成稀缺資產》&#xff0c;其中一章講到耐心的重要性&#xff0c;很有共鳴。 當今社會&#xff0c;生活節奏越來越快&#xff0c;我們都在急于求成的追求結果&#xff0c;對過程越來越缺乏耐…

C++核心編程友元的應用

文章目錄 1.友元1.什么是友元2.全局函數做友元2.類做友元3.成員函數做友元 1.友元 1.什么是友元 在C中&#xff0c;友元&#xff08;friend&#xff09;是一種允許一個類或函數訪問另一個類的非公有&#xff08;private 或 protected&#xff09;成員的機制。這種機制打破了類…

系統研發安全漏洞

軟件安全漏洞指的是軟件中存在的具體缺陷或疏忽&#xff0c;這些缺陷或疏忽能夠被攻擊者利用并執行一些惡意行為。這些行為包括但不限于泄露或修改敏感信息、干擾或銷毀系統、接管計算機系統或程序權限等。與大眾熟悉的軟件缺陷&#xff08;Bug&#xff09;相比&#xff0c;安全…

Mysql中表的常用約束

在MySQL表中常用的約束有以下幾種&#xff1a; 1. 主鍵約束&#xff08;Primary Key Constraint&#xff09;&#xff1a;用于標識表中的唯一記錄。一個表只能有一個主鍵&#xff0c;主鍵列不能有重復值&#xff0c;也不能為NULL。 2. 唯一約束&#xff08;Unique Constraint…

2024050402-重學 Java 設計模式《實戰責任鏈模式》

重學 Java 設計模式&#xff1a;實戰責任鏈模式「模擬618電商大促期間&#xff0c;項目上線流程多級負責人審批場景」 一、前言 場地和場景的重要性 射擊&#x1f3f9;需要去靶場學習、滑雪&#x1f3c2;需要去雪場體驗、開車&#x1f697;需要能上路實踐&#xff0c;而編程…

Scanpy(4)用與數據整合和批次處理

Scanpy包,用與數據整合和批次處理,包含批次效應的BBKNN算法和用于對比的ingest基礎算法比較,及其原理簡介。 1. 依賴: (1)數據集(全部需要掛VPN): PBMC:pbmc3k_processed()(需要下載);pbmc68k_reduced()(scanpy自帶)Pancreas(需要下載)(2)Python包:Scanp…