LeetCode:Database 15.当选者
Posted Xiao Miao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:Database 15.当选者相关的知识,希望对你有一定的参考价值。
要求:请编写 sql 语句来找到当选者的名字,上面的例子将返回当选者 B。
表: 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.
注意:
- 你可以假设没有平局,换言之,最多只有一位当选者。
分析:
1.要找到当选者的姓名,首先需要找到选票最多的侯选人id
2.通过候选人id找到当选人姓名
SQL语句:
#1.方法1
SELECT NAME FROM candidate
WHERE id IN(
SELECT candidateid FROM(
SELECT candidateid,dense_rank() over(ORDER BY c1 DESC)AS r FROM(
SELECT DISTINCT candidateid,COUNT(*) over(PARTITION BY candidateid )AS c1
FROM vote)a)b
WHERE r=1);
#2.方法2
SELECT NAME FROM candidate
WHERE id =(
SELECT candidateid FROM vote GROUP BY candidateid ORDER BY COUNT(*) DESC LIMIT 1);
以上是关于LeetCode:Database 15.当选者的主要内容,如果未能解决你的问题,请参考以下文章
牛刀小试 ——《当选者》LeetCode Plus 会员专享题详细解析Hive / MySQL
LeetCode:Database 78.不同国家的天气类型
“psql: could not connect to server: Connection refused” Error when connecting to remote database(示例代
Mysql操作容量限制问题Error updating database. Cause: com.mysql.jdbc.PacketTooBigException: Packet for que(代