两个力扣简单题,编写解决方案找出 大国 的国家名称、人口和面积。查询 至少有5个学生 的所有班级。两个小SQL
595. 大的国家
题目描述
World
表:
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| name | varchar |
| continent | varchar |
| area | int |
| population | int |
| gdp | bigint |
+-------------+---------+
name 是该表的主键(具有唯一值的列)。
这张表的每一行提供:国家名称、所属大陆、面积、人口和 GDP 值。
如果一个国家满足下述两个条件之一,则认为该国是 大国 :
- 面积至少为 300 万平方公里(即,
3000000 km2
),或者 - 人口至少为 2500 万(即
25000000
)
编写解决方案找出 大国 的国家名称、人口和面积。
按 任意顺序 返回结果表。
返回结果格式如下例所示。
示例:
输入: World 表: +-------------+-----------+---------+------------+--------------+ | name | continent | area | population | gdp | +-------------+-----------+---------+------------+--------------+ | Afghanistan | Asia | 652230 | 25500100 | 20343000000 | | Albania | Europe | 28748 | 2831741 | 12960000000 | | Algeria | Africa | 2381741 | 37100000 | 188681000000 | | Andorra | Europe | 468 | 78115 | 3712000000 | | Angola | Africa | 1246700 | 20609294 | 100990000000 | +-------------+-----------+---------+------------+--------------+ 输出: +-------------+------------+---------+ | name | population | area | +-------------+------------+---------+ | Afghanistan | 25500100 | 652230 | | Algeria | 37100000 | 2381741 | +-------------+------------+---------+
解题思路
- 从
World
表中选择国家名称(name
)、人口(population
)和面积(area
)。 - 使用
WHERE
子句来筛选那些面积至少为 300 万平方公里(area >= 3000000
)或人口至少为 2500 万(population >= 25000000
)的国家。
完整代码
SELECT name, population, area
FROM World
WHERE area >= 3000000 OR population >= 25000000;
这个 SQL 语句首先指定了我们需要从 World
表中选择的列(name
、population
和 area
)。然后,WHERE
子句确保只有那些面积至少为 300 万平方公里或人口至少为 2500 万的记录才会被包含在结果集中。执行这个查询后,你将得到一个包含所有符合条件的“大国”国家名称、人口和面积的列表。
通过
596. 超过5名学生的课
题目描述
表: Courses
+-------------+---------+ | Column Name | Type | +-------------+---------+ | student | varchar | | class | varchar | +-------------+---------+ 在 SQL 中,(student, class)是该表的主键列。 该表的每一行表示学生的名字和他们注册的班级。
查询 至少有5个学生 的所有班级。
以 任意顺序 返回结果表。
查询结果格式如下所示。
示例 1:
输入: Courses table: +---------+----------+ | student | class | +---------+----------+ | A | Math | | B | English | | C | Math | | D | Biology | | E | Math | | F | Computer | | G | Math | | H | Math | | I | Math | +---------+----------+ 输出: +---------+ | class | +---------+ | Math | +---------+ 解释: -数学课有6个学生,所以我们包括它。 -英语课有1名学生,所以我们不包括它。 -生物课有1名学生,所以我们不包括它。 -计算机课有1个学生,所以我们不包括它。
解题思路
- 从
Courses
表中选择班级(class
)列。 - 使用
GROUP BY
语句按班级分组,这样每个班级只会出现一次,并且我们可以计算每个班级的学生数量。 - 使用
COUNT(student)
聚合函数来计算每个班级的学生数量。 - 使用
HAVING
子句来筛选出那些学生数量至少为 5 的班级。
完整代码
SELECT class
FROM Courses
GROUP BY class
HAVING COUNT(student) >= 5;
这个查询首先将 Courses
表中的记录按 class
列进行分组。然后,它计算每个班级的学生数量(使用 COUNT(student)
)。最后,HAVING
子句确保只有那些学生数量至少为 5 的班级被包括在结果集中。执行这个查询后,你将得到一个列表,其中包含所有至少有 5 名学生的班级
通过