力扣574(MySQL)-当选者(中等)
题目:
表: Candidate

表: Vote

id 是自动递增的主键,CandidateId 是 Candidate 表中的 id.
问题:请编写 sql 语句来找到当选者的名字,上面的例子将返回当选者 B.

注意: 你可以假设没有平局,换言之,最多只有一位当选者。
解题思路:
①先找出Vote表中出现次数最多的选手,将Vote中按CandidateId分组,并统计出现的id次数,降序排序,使用limit 1取出第一名;
1 SELECT CandidateId
2 FROM vote_574
3 GROUP BY CandidateId
4 ORDER BY count( id ) DESC
5 LIMIT 1;

②筛选出Candidate表中与第①步查询出来的CandidateId相对应的Name。
1 SELECT name
2 FROM candidate_574 a,
3 ( SELECT CandidateId
4 FROM vote_574
5 GROUP BY CandidateId
6 ORDER BY count( id ) DESC
7 LIMIT 1 ) as b
8 WHERE
9 a.id = b.CandidateId;

或:
1 SELECT name
2 FROM
3 ( SELECT CandidateId
4 FROM vote_574
5 GROUP BY CandidateId
6 ORDER BY count( id ) DESC
7 LIMIT 1 ) as a
8 JOIN candidate_574 b
9 ON a.CandidateId = b.id;
补充建表语句:
1 Create table If Not Exists Candidate_574 (id int, Name varchar(255));
2 Create table If Not Exists Vote_574 (id int, CandidateId int);
3 -- 删除表中所有行数据
4 Truncate table Candidate_574;
5 insert into Candidate_574 (id, Name) values ('1', 'A');
6 insert into Candidate_574 (id, Name) values ('2', 'B');
7 insert into Candidate_574 (id, Name) values ('3', 'C');
8 insert into Candidate_574 (id, Name) values ('4', 'D');
9 insert into Candidate_574 (id, Name) values ('5', 'E');
10 Truncate table Vote_574;
11 insert into Vote_574 (id, CandidateId) values ('1', '2');
12 insert into Vote_574 (id, CandidateId) values ('2', '4');
13 insert into Vote_574 (id, CandidateId) values ('3', '3');
14 insert into Vote_574 (id, CandidateId) values ('4', '2');
力扣574(MySQL)-当选者(中等)的更多相关文章
- 力扣1689. 十-二进制数的最少数目-C语言实现-中等难度题
题目 传送门 如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 .例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是 ...
- 力扣1438. 绝对差不超过限制的最长连续子数组-C语言实现-中等难度
题目 传送门 文本 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit . 如果不存在满足条 ...
- 力扣1052. 爱生气的书店老板-C语言实现-中等难度
题目 传送门 文本 今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开. 在某些时 ...
- 力扣---1148. 文章浏览 I
Views 表:+---------------+---------+| Column Name | Type |+---------------+---------+| article_i ...
- 力扣---511. 游戏玩法分析 I
活动表 Activity: +--------------+---------+| Column Name | Type |+--------------+---------+| player ...
- 力扣算法题—069x的平方根
实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 ...
- JS数据结构第六篇 --- 二叉树力扣练习题
1.第226题:翻转二叉树 递归+迭代两种实现方式: /** 反转二叉树 * Definition for a binary tree node. * function TreeNode(val) { ...
- 力扣(LeetCode)删除排序链表中的重复元素II 个人题解
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 思路和上一题类似(参考 力扣(LeetCode)删除排序链表中的重复元素 个人题解)) 只不过这里需要用到一个前 ...
- C++双指针滑动和利用Vector实现无重复字符的最长子串—力扣算法
题目: 力扣原题链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 给定一个字符串, ...
- LeetCode 1244. 力扣排行榜
地址 https://www.acwing.com/solution/LeetCode/content/5765/ 题目描述新一轮的「力扣杯」编程大赛即将启动,为了动态显示参赛者的得分数据,需要设计一 ...
随机推荐
- 为aws中国配置docker镜像加速
在AWS中国,docker镜像基本无法拉取,更换国内镜像是必须的. 修改docker配置文件 sudo vi /etc/sysconfig/docker 找到OPTIONS参数,在后面加上" ...
- Client请求外部接口标准处理方式
简单记录下client外部请求代码的我认为比较标准的书写格式 public List<GdtDailyBalanceReportAO> getGdtDailyReportList2(Lon ...
- 视野修炼第71期 | Rspack 家族新成员 Rsdoctor
欢迎来到第 71 期的[视野修炼 - 技术周刊],下面是本期的精选内容简 强烈推荐 Rspack 新成员:Rsdoctor Bun Shell DCloud:App跨平台框架对比2023版 开源工具& ...
- 开源一个教学型分库分表示例项目 shardingsphere-jdbc-demo
在笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客. 分库分表之所以被广泛使用,因为工程相对简单,但分库分表并不仅仅是分片,还是需要考虑如何扩缩容(全量同步.增量同步.数据校验等). 因此笔者 ...
- [前端原生技术]jsonp
[版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18031965出自[进步*于辰的博客] 在学习了Jsoup ...
- AI+软件工程:10倍提效!用ChatGPT编写系统功能文档
系统功能文档是一种描述软件系统功能和操作方式的文档.它让开发团队.测试人员.项目管理者.客户和最终用户对系统行为有清晰.全面的了解. 通过ChatGPT,我们能让编写系统功能文档的效率提升10倍以上. ...
- python爬虫反爬之快速配置免费IP代理池(ProxyPool)
关注我的公众号[靠谱杨阅读人生]回复ProxyPool可以免费获取网盘链接. 也可自行搜索下载:https://github.com/Python3WebSpider/ProxyPool.git 1. ...
- #分类讨论#CF891A Pride
题目 你有一个长度为 \(n\) 的数列 \(a\),你能执行一些操作. 每个操作是这样的:选择两个相邻的数 \(x\) 和 \(y\),把 它们中的一个 换为 \(\gcd(x,y)\). 问你把数 ...
- #trie,树链剖分#洛谷 6088 [JSOI2015]字符串树
题目 分析 显然树上的问题可以转换成根节点到两点的答案减去2倍根节点到LCA的答案 化边为点,考虑子节点承接父节点的trie,再加入一条新的字符串, 在循环的过程中统计一个位置被多少个字符串经过, 这 ...
- OpenHarmony嵌套类对象属性变化:@Observed装饰器和@ObjectLink装饰器
上文所述的装饰器仅能观察到第一层的变化,但是在实际应用开发中,应用会根据开发需要,封装自己的数据模型.对于多层嵌套的情况,比如二维数组,或者数组项class,或者class的属性是class,他们的第 ...