0


【LeetCode-SQL每日一练】—— 595. 大的国家

🎈写在前面

🙋‍♂️大家好呀,我是超梦。大家可以叫我小梦~

小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟数据库打交道的,为了更好的操作数据库,我们的SQL知识储备是必不可少的。想要掌握好SQL,那少不了每天的练习与学习。接下来小梦会带领小伙伴们一起每天刷一道LeetCode-数据库(SQL)相关的题目,然后在文章后例举相关知识点帮助小伙伴们学习与巩固,更好的掌握SQL。

🙋‍♂️ 小伙伴们如果在学习过程中有不明白的地方,欢迎评论区留言提问,小梦定知无不言,言无不尽。

5a07a437aab648caa0f1925acc3834ab.png


**

 World

表:**

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| name        | varchar |
| continent   | varchar |
| area        | int     |
| population  | int     |
| gdp         | int     |
+-------------+---------+
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 是这张表的主键
这张表的每一行提供:国家名称、所属大陆、面积、人口和 GDP 值。


如果一个国家满足下述两个条件之一,则认为该国是 大国 :

面积至少为 **300** 平方公里(即,3000000 km2),或者
 人口至少为 **2500** 万(即 25000000)

编写一个 SQL 查询以报告 大国 的国家名称、人口和面积。按 任意顺序 返回结果表。

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

输出:
+-------------+------------+---------+
| name        | population | area    |
+-------------+------------+---------+
| Afghanistan | 25500100   | 652230  |
| Algeria     | 37100000   | 2381741 |
+-------------+------------+---------+


这道题算是很简单的一道题了,小伙伴们可以练练手

题目要查出面积至少为 300 平方公里(即,3000000 km2),或者人口至少为 2500 万(即 25000000)的国家来,并按照题目要求格式输出。题目中给出两个条件就不难得知我们需要用where子句来做条件限定,把上述条件加到where子句后就可以——》...from world where area >= 3000000 or population >= 25000000。


我们首先使用where子句,根据题目中要求的两个条件来过滤记录

条件:
  面积超过 300 万平方公里。

  人口超过 2500 万。

因为题目说满足其中一条就可以,那我们可以使用or来连接两个条件。

题解

SELECT
    name, population, area
FROM
    world
WHERE
    area >= 3000000 OR population >= 25000000;

我们可以根据题目要求的两个条件分别做查询。

条件1:面积超过 300 万平方公里

SELECT name, population, area FROM world WHERE area > 3000000;

条件2:人口超过 2500 万

SELECT name, population, area FROM world WHERE population > 25000000;

然后我们再通过union来连接这两个查询(*文章知识点小结部分会有对union以及union all的简单讲解,小伙伴们记得***哦~**)

题解:

SELECT name, population, area FROM world WHERE area > 3000000

UNION

SELECT name, population, area FROM world WHERE population > 25000000;

62b14cb48ac14c51a61a4c898194150d.gif


SELECT
    name, population, area
FROM
    world
WHERE
    area >= 3000000 OR population >= 25000000;

执行代码,进行测试

与预期结果一致,测试成功!


SELECT name, population, area FROM world WHERE area > 3000000

UNION

SELECT name, population, area FROM world WHERE population > 25000000;

执行代码,进行测试

**与预期结果一致,测试成功! **



** 1. union对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序**;

2. union all对两个结果集进行并集操作,包括重复行不进行排序

扩展知识

我们可以在最后一个结果集中,通过指定Order by子句来改变排序方式。


😀感谢小伙伴们,如果有什么疑问,欢迎留言询问,小梦定知无不言,言无不尽!



标签: sql 数据库 database

本文转载自: https://blog.csdn.net/weixin_42306958/article/details/122781937
版权归原作者 _超 梦 所有, 如有侵权,请联系我们删除。

“【LeetCode-SQL每日一练】—— 595. 大的国家”的评论:

还没有评论