sql 查询上个月的数据_SQL数据分析4:复杂查询

  • 主要内容

一. 视图

  1. 什么是视图?

视图中存放的是sql查询语句。使用视图时,sql运行视图里的查询语句创建出一张临时表。

2. 如何创建视图?

create view 视图名称(<视图列名1>,<视图列名2>, ……)
as
<select 查询语句>;

例:

create view 按性别汇总(性别, 人数)
as 
select 性别, count(*)
from student
group by 性别;

使用视图:

select 性别, 人数
from 按性别汇总;

3. 视图有什么用?

将频繁使用的sql查询语句保存为视图

4. 注意事项

1)避免在视图中再创建视图,多重视图会降低sql的性能和效率

2)不能往视图里插入数据

二. 子查询

  1. 什么是子查询?

在sql查询子句中直接写定义视图的SQL查询语句 (select 中嵌套select)

运行顺序:运行子查询---得到临时表---from从临时表中查找数据

aca4096f3f0e0353d50a8b78c13a259e.png

2. 如何使用子查询?

1)在from 子句中

from(子查询) as <子查询名称>

2)在where 子句中

a) in

1216017f51c95b92702fdd8c1ed8497a.png
学号是随机产生的,并不是成绩最低同学的学号

正确答案:

/*本章关联子查询*/
select *
from score as a
where 成绩 in (
select min(成绩)
from score as b
where b.课程号= a.课程号
);

b) any、some (与比较运算符一起使用)

756aeef6e13d2127249a0e2f10270099.png

例:哪些学生的成绩比课程0002的全部成绩里的任意一个高呢?

select 学号, 成绩
from score
where 成绩 > any(
select 成绩
from 成绩
where 课程号= '0002'
);

c)all

例:哪些学生的成绩比课程0002的全部成绩里的都高呢?

select 学号, 成绩
from score
where 成绩 > all(
select 成绩
from 成绩
where 课程号= '0002'
);

3. 注意事项

6c076095ce49ad56ade434bf9a5fba59.png

三. 标量子查询

  1. 什么是标量子查询?

907185b0e457aba89c147815cebf1175.png

【注】where 中不能出现汇总函数

570813e08729404f965d7856ec79a42c.png

例:

select 学号, 成绩
from score
where 成绩 between
(select avg(成绩)
from score
where 成绩<=60) and 
(select avg(成绩)
from score
where 成绩 >= 80);

2. 如何使用子查询? --任何使用单一值的地方都可以使用子查询

35be1b30bda7949cb9789cd0b83911bb.png

3. 标量子查询有什么用?

cb50e5a0c2372167ebad07857b224ede.png

4. 注意事项

标量子查询不能返回多行

四. 关联子查询

  1. 什么是关联子查询?

dcab4bb56c741ca89edbed20f395fa2b.png

f3f5319f8e480013f11cca81e184329f.png

【注】group by 可省略

2. 运行步骤:

1)先运行子查询:查找出每个课程平均成绩---只返回与当前s1课程号相同的平均成绩

2)比较成绩

ef3944db2f78fd4e9bb64c774a485171.png

【注】关联子查询一定要写在子查询里

3. 有什么用?

在每个组里进行比较

五. 函数

29a3ab04738b6b1beb0928c75a031ee8.png

cbbb95355cbf8595ed1a56defd3ca230.png

521e443de32c2b5c0b6f4f246a227ed4.png

f5bd503eb48143beaa042ffa128038b2.png
  • sqlzoo

0238d341f3944ff92a35a0ad9b8b2392.png

【注】去掉null

6ec4ea20caf9ed4485475f96f12fe0dc.png

2.

6511866fe085915081e05b4d43f9b1a8.png

或者:

1ad48cf58cafb5bb2dfe60583d8dbe03.png

【注】1) <> 或 != : 不等于

2)

28490bdcdcb6d5148658af5f672ddf46.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值