美文网首页
Leetcode574. 当选者(中等)

Leetcode574. 当选者(中等)

作者: kaka22 | 来源:发表于2020-07-10 09:42 被阅读0次

题目
表: 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    |
+------+

注意:

你可以假设没有平局,换言之,最多只有一位当选者。

生成数据

CREATE TABLE Candidate(
id INT,
NAME VARCHAR(10));

INSERT INTO Candidate VALUE(1,'A'),(2,'B'),(3,'C'),(4,'D'),(5,'E');

CREATE TABLE Vote(
id INT,
CandidateId  INT
);

INSERT INTO Vote VALUE(1,2),(2,4),(3,3),(4,2),(5,5);

解答
两表连接

select V.name  
from Vote as V
left join Candidate as C
on V.CandidateId = C.id
group by V.name
order by count(C.name) desc
limit 0,1;

利用子查询
先查出投票最多的CandidateId

select V.CandidateId 
from Vote as V
group by V.CandidateId
order by count(V.CandidateId) desc
limit 0,1;

选出对应id的姓名

select C.Name
from  Candidate as C
where C.id = (select V.CandidateId 
from Vote as V
group by V.CandidateId
order by count(V.CandidateId) desc
limit 0,1)

同理

select C.Name
from Candidate as C join
(
    select V.CandidateId,count(V.id) as cnt
    from Vote as V
    group by V.CandidateId
    order by cnt desc
    limit 0,1
) as A
on (C.id = A.CandidateId)

看到别人的解答中出现了一种情况 Vote表中的某些CandidateId可能不在Candidate 表中

感觉这种情况不存在呀 。。。

相关文章

  • Leetcode574. 当选者(中等)

    题目表: Candidate 表: Vote id 是自动递增的主键,CandidateId 是 Candidat...

  • 致当选者

    换届工作即将结束,没有硝烟的战斗也即将落下帷幕,村里的狗狗们烦躁不安的狂吼声也渐渐平息了下来。冬日的小山村的夜晚又...

  • 《快公司》看海尔的颠覆创新力:流荡世代的制造者进化

    文/刘琪的商业观察(liuqi-guancha) 美国《快公司》杂志最近评出了中国10大最具创新力公司榜,当选者以...

  • 最佳猫小姐

    今年度最佳猫小姐的桂冠,落到了白雪小姐头上。根据竞选规则,当选者必须具备三个条件:第一,外表和心灵都美。第二,必须...

  • 1998年10月10日 Leon荣获香港十大杰出青年

    本年度香港杰出青年已经诞生﹐ 能够在云云参与者中脱颖而出的六位当选者﹐除Leon外,包括中大音乐系副教授﹑香港管弦...

  • 余生可不可以再忧伤

    #1我的笼子在哪里? 迎春是一个中等的男人,长相中等、家境中等、成绩中等是因为智商也在中等。 大学在济南,上了...

  • 降低期待值,让爱情快靠近

    我的资深闺蜜--米粒,年方二八,身高中等、长相中等、工作中等、家庭条件中等,就是这么个中等姐,人家有追求啊,一直想...

  • 中等偏上

    童年,自从进入学校,我才认识到自己并没有那么聪明,但也不笨。这个不是父母和其他人告诉我的,而是我的成绩,中等偏上。...

  • 中等意思

    喝了瓶可乐,又在跑步时吸了几口冷风,造成喉咙肿痛,继而转为咳嗽不止,试了强力枇杷露,没有明显改善,想尝试一下偏方能...

  • 苟且中等

    生活比较苟且 感情太过稀缺 无赖的走不完全场 等着什么到来 都有过失望 没活成绝望 丢失了信仰 初衷还在心上 等着...

网友评论

      本文标题:Leetcode574. 当选者(中等)

      本文链接:https://www.haomeiwen.com/subject/lyrpcktx.html