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 97.制作会话柱状图

LeetCode:Database 97.制作会话柱状图

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(代