lintcode-2071 · 查询最年长且国籍是美国的教师信息

283 阅读2分钟

描述

请编写 SQL 语句,使用内联视图,查询最年长且教师国籍为 USA 的信息。

表定义:teachers(教师表)

列名类型注释
idint unsigned主键
namevarchar教师姓名
emailvarchar教师邮箱
ageint教师年龄
countryvarchar教师国籍

**

  • 查询返回列名需要与样例输出的列名大小写一致。
  • 最年长且国籍是美国的教师可能不止一位。
  • 如果输入数据中存在教师年龄或教师国籍信息为 NULL,则跳过该数据。
  • 如果查询不到结果,就什么都不返回。

样例

样例一:

表内容:teachers

idnameemailagecountry
1Eastern Hereticeastern.heretic@gmail.com20UK
2Northern Beggarnorthern.beggar@qq.com21CN
3Western Venomwestern.venom@163.com28USA
4Southern Emperorsouthern.emperor@qq.com21JP
5Linghu ChongNULL18CN

在运行你的 SQL 语句之后,表应返回:

idnamestudent_countcreated_atteacher_id
3Western Venomwestern.venom@163.com28USA

样例二:

表内容:teachers

idnameemailagecountry
1Eastern Hereticeastern.heretic@gmail.com20UK
2Northern Beggarnorthern.beggar@qq.com21CN
4Southern Emperorsouthern.emperor@qq.com21JP
5Linghu ChongNULL18CN

在运行你的 SQL 语句之后,表应返回:

idnamestudent_countcreated_atteacher_id

因为输入样例中没有符合条件的数据,所以这里只展示了标题,没有数据。

题解

什么是内联视图:

内联视图是SQL语言(结构化查询语言)中三种主要视图(标准视图、内联视图、物化视图)中的一种。内联视图是一种临时视图,不存储到数据字典中。它和标准视图在使用过程中的主要区别是,不需要在进行SELECT查询语句前进行视图的创建。

先根据 country = 'USA'找到最大的年纪,然后再根据最大的年纪找到老师

select *
from teachers
where age = (
    select max(age)
    from teachers
    where country = 'USA'
) and country = "USA";