SQL数据分析之子查询的综合用法和案例题【耐心整理】

零、写在前面

本文所有代码均是在SQL ZOO平台进行,数据也该平台下的world表和一些其他平台提供的数据表,所有代码均已通过测试。
在这里插入图片描述

一、子查询基础用法

1、说明
子查询本身就是一段完整的查询语句,然后用括号英文括号(包裹嵌套在主查询语包虫,
子查询可以多层嵌套最常用的子查询运用在from和where子句中。

2、查询gdp高于欧洲每个国家的所有国家名,有一些国家gdp可能为null,需要进行排除

select name
from world
where gdp is not null 
and gdp>=(select max(gdp) from world where continent='Europe')

注意:记得子查询的select要加括号,而且返回的必须是一个值(max(gdp)),而不是一列值(gdp)
1.1.1
3、查询与澳大利亚Australia和智利Chile同一个大洲的国家和所属大洲

select continent,name
from world
where continent in (select continent from world where name in('Australia','Chile'))
order by continent,name

1.3.1
4、子查询详细解释
(1)子查询是可以自己正常独立运行的一段完整的查询语句,然后将子查询的查询结果作为主查询的一部分,因此子查询优先于主查询运行

(2)练习1是带比较运算符的子查询,要求子查询为标量子查询,即子查询结果为一行- -列(相当于-一个单元格)

(3)练习2是带in关键字的子查询,要求子查询为列子查询,即子查询结果为多行一列(单列)

(4)where子句中的子查询适用于查询条件无法一步到位, 需要先进行一步查询得到结果,基于这个查询结果再进行条件判断的情况,相当于我们无法直达时,需要进行换乘

二、子查询综合用法(难题)

1、查询2017年所有在爱丁堡的选区当选议员所在选区(constituency) 及其团队(party) ,已知爱丁堡选区编号为S14000021至S14000026,当选议员即各选区得票数最高的候选人

第一步:使用窗口函数对各个选区的候选人进行排序

select constituency,party,votes,
rank() over(
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿蒙Next

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值