大家好,我是老吳,大家也可以叫我吳同學,再小一點的朋友也可以叫我吳師兄,歡迎大家跟我一起走進資料分析的世界,一起學習!
感興趣的朋友可以關注我的資料分析專欄,里面有許多優質的文章跟大家分享哦,
另外也歡迎大家關注我的SQL刷題專欄,里面有我分享的高質量SQL題,以及詳細的決議,
目錄
- 問題描述
- 解題思路
- 代碼實作
- 結束語
本篇博文又是我的SQL題分享環節,為了記錄一下自己的做題程序,以及防止后續力扣會員過期無法再次查看題目,所以我每天都會給大家選出一道質量較高的SQL題目發表到博客上,并且會加上自己的一些解題技巧或實用知識點,希望對大家也能有所幫助,
那么今天給大家分享的題是LeetCode的第574題——當選者,
下面是問題的詳細描述,
問題描述
表: `Candidate``
+-----+---------+
| id | Name |
+-----+---------+
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | D |
| 5 | E |
+-----+---------+
表: Vote
+-----+--------------+
| id | CandidateId |
+-----+--------------+
| 1 | 2 |
| 2 | 4 |
| 3 | 3 |
| 4 | 2 |
| 5 | 5 |
+-----+--------------+
id 是自動遞增的主鍵,
CandidateId 是 Candidate 表中的 id.
請撰寫 sql 陳述句來找到當選者的名字,上面的例子將回傳當選者 B.
+------+
| Name |
+------+
| B |
+------+
注意:
- 你可以假設沒有平局,換言之,最多只有一位當選者,
解題思路
- 按CandidateId 分組,求出每個id的得票情況;
- 用order by排序和limit 1選出最多的id(這里經常有人想不起用limit而是去用max然后再進一步求出id,這樣就慢了一步);
- left join Candidate表得到最終結果
代碼實作
select b.Name from
(
select CandidateId, count(*) from Vote
group by CandidateId
order by count(*) DESC
LIMIT 1
) a
left join
Candidate b
on a.CandidateId = b.id
結束語
看完這篇,還有更多知識點分享給你哦,自己慢慢找哈,就在下面鏈接,
推薦關注的專欄
👨?👩?👦?👦 機器學習:分享機器學習實戰專案和常用模型講解
👨?👩?👦?👦 資料分析:分享資料分析實戰專案和常用技能整理
往期內容回顧
💚 學習Python全套代碼【超詳細】Python入門、核心語法、資料結構、Python進階【致那個想學好Python的你】
?? 學習pandas全套代碼【超詳細】資料查看、輸入輸出、選取、集成、清洗、轉換、重塑、數學和統計方法、排序
💙 學習pandas全套代碼【超詳細】分箱操作、分組聚合、時間序列、資料可視化
💜 學習NumPy全套代碼【超詳細】基本操作、資料型別、陣列運算、復制和試圖、索引、切片和迭代、形狀操作、通用函式、線性代數
關注我,了解更多相關知識!
CSDN@報告,今天也有好好學習
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/381910.html
標籤:AI
上一篇:【有獎提問】向賈揚清(阿里巴巴副總裁、Caffe作者、TensorFlow作者之一、ONNX創始人)提問啦
下一篇:[論文閱讀] (14)英文論文實驗評估(Evaluation)如何撰寫及精句摘抄(上)——以入侵檢測系統(IDS)為例
