2025年--Lc182--sql(排序和分组)--Java版

1.查询 至少有 5 个学生 的所有班级。

以 任意顺序 返回结果表。

结果格式如下所示。

输入

sql 复制代码
Courses table:
+---------+----------+
| student | class    |
+---------+----------+
| A       | Math     |
| B       | English  |
| C       | Math     |
| D       | Biology  |
| E       | Math     |
| F       | Computer |
| G       | Math     |
| H       | Math     |
| I       | Math     |
+---------+----------+

输出

sql 复制代码
+---------+ 
| class   | 
+---------+ 
| Math    | 
+---------+

解释:

-数学课有 6 个学生,所以我们包括它。

-英语课有 1 名学生,所以我们不包括它。

-生物课有 1 名学生,所以我们不包括它。

-计算机课有 1 个学生,所以我们不包括它。

sql 复制代码
select class
from Courses
group by class
having count(student)>=5

2.编写解决方案,对于每一个用户,返回该用户的关注者数量。

按 user_id 的顺序返回结果表。

查询结果的格式如下示例所示。

sql 复制代码
示例 1:

输入:
Followers 表:
+---------+-------------+
| user_id | follower_id |
+---------+-------------+
| 0       | 1           |
| 1       | 0           |
| 2       | 0           |
| 2       | 1           |
+---------+-------------+
输出:
+---------+----------------+
| user_id | followers_count|
+---------+----------------+
| 0       | 1              |
| 1       | 1              |
| 2       | 2              |
+---------+----------------+
解释:
0 的关注者有 {1}
1 的关注者有 {0}
复制代码
首先按照user_id进行分组,然后统计每一组的user_id数量即为关注的人数,并且各组之间按照user_id进行升序排序。
sql 复制代码
select user_id ,count(user_id) as followers_count
from Followers
group by user_id
order by user_id

3.单一数字 是在 MyNumbers 表中只出现一次的数字。

找出最大的 单一数字 。如果不存在 单一数字 ,则返回 null 。

查询结果如下例所示。

sql 复制代码
示例 1:

输入:
MyNumbers 表:
+-----+
| num |
+-----+
| 8   |
| 8   |
| 3   |
| 3   |
| 1   |
| 4   |
| 5   |
| 6   |
+-----+
输出:
+-----+
| num |
+-----+
| 6   |
+-----+
解释:单一数字有 1、4、5 和 6 。
6 是最大的单一数字,返回 6 。
sql 复制代码
示例 2:

输入:
MyNumbers table:
+-----+
| num |
+-----+
| 8   |
| 8   |
| 7   |
| 7   |
| 3   |
| 3   |
| 3   |
+-----+
输出:
+------+
| num  |
+------+
| null |
+------+
解释:输入的表中不存在单一数字,所以返回 null 。
 

使用子查询找出仅出现一次的数字。

java 复制代码
select num
from MyNumbers
group by num
having count(num)=1

然后使用 MAX() 函数找出其中最大的一个。

sql 复制代码
select max(num) as num
from
(select num
from MyNumbers
group by num
having count(num)=1 
) as t;
相关推荐
SunnyDays10111 小时前
如何使用 Java 提取 PPT 中的文字:整份文档、指定幻灯片与表格内容
java·powerpoint
毕设单片机1 小时前
springboot志愿服务平台的设计与实现 36731
java·spring boot·mysql·志愿服务平台
IT_Octopus1 小时前
【零基础入门 LLM 开发 · Day 15】:LangChain 注册工具——告别手写 JSON Schema
java·langchain·json
Elastic 中国社区官方博客1 小时前
教程:监控 Java 应用
java·开发语言·数据库·elasticsearch·搜索引擎·全文检索
ShineWinsu1 小时前
对于JavaScript:初识JavaScript以及输入输出
java·开发语言·前端·javascript·css·面试·html
xixingzhe22 小时前
秒杀库存三种缓存实现方案
数据库·redis·缓存
小小安于乱2 小时前
linux中java的springboot程序获取IP地址间歇性10秒卡顿问题
java·开发语言
软件交付观察室2 小时前
数据大屏总数与明细为什么对不上?2026项目开发排查指南
软件测试·数据库·sql·sqlite·数据可视化
倔强的石头_2 小时前
数据集成软件怎么选 研究了一圈,我盯上了金仓KFS
数据库
正在走向自律2 小时前
KingbaseES 列存储踩坑记:cstore_fdw 建表灌数全过程,以及数据改不动怎么办
数据库·国产数据库·kingbasees·金仓数据库·列存储