数仓培训第七天

1.join

join语法图

左连接

以左表为主,数据是全的;右表来匹配,匹配不到就null
给业务的话就不要存在null(大数据中百分之七八十的场景是做group by和join计算)

1
2
3
4
5
6
7
8
9
10
11
select 
a.*,
b.*
from a
left join b on a.i=b.i; #判断条件

1 rz 北京 1 rz 18
2 jj 上海 2 jj 22
3 huhu 杭州

#建议所有的都加ifnull

右连接

以右表为主,数据是全的;左表来匹配,匹配不到就null

1
2
3
4
5
6
7
8
9
10
11
select 
a.*,
ifnull(b.i,''), #不想赋0,可以放个空值 ' '
ifnull(b.name,''),
ifnull(b.age,'')
from a
right join b on a.i=b.i;

1 rz 北京 1 rz 18
2 jj 上海 2 jj 22
5 dd 33

内连接-等值连接

两个表都存在,才会显示出来

1
2
3
4
5
6
7
8
9
select 
a.*,
ifnull(b.i,''),
ifnull(b.name,''),
ifnull(b.age,'')
from a
inner join b on a.i=b.i;
1 rz 北京 1 rz 18
2 jj 上海 2 jj 22

mysql不支持full join, 但是大数据sql支持 比如spark sql
#full是可以完全合并表,但是会存在很多空数据
select
a1.i,
b1.i
from a a1
full join b b1 on a1.i=b1.i;

#作用和full一致

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
select 
a.*,
ifnull(b.i,''),
ifnull(b.name,''),
ifnull(b.age,'')
from a
left join b on a.i=b.i
union
select
a.*,
ifnull(b.i,''),
ifnull(b.name,''),
ifnull(b.age,'')
from a
right join b on a.i=b.i;

1 rz 北京 1 rz 18
2 jj 上海 2 jj 22
3 huhu 杭州
5 dd 33

大部分是先join在groupby
生产上先确定主表
不写左右,那就是等值连接
不写后边的限制条件,则会第一个表格的每一条匹配后边表格的每一条数据 —笛卡尔积–生产慎用

2.总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
select * from a limit 1  #限制一条

select xxxxx from
t #join操作可能集合到这里
where yyyyyy #先执行选择筛选
group by xxx having xxx#聚合
order by xxx #排序 #不放在聚合前面
limit 1;

#创建一个v命令包,就可以直接执行一部分代码-需要运行一次代码
create view v
as
select
a1.i
b1.age
from a a1 join b b1 on a1.i=b1.i;

select * from v

#雾化视图 计算速度快,不需要重复操作

进入数据库,习惯show tables;看到表
desc查看表有哪些字段

show create table user; 完整建表语句

部门表和工资等级表是维度表,不太变

union多表格合并

null和任何值计算都是null

彩蛋:
这个班级的每个学科的成绩的前三名的同学
#哪些部门的哪些职业的薪水和,薪水最高1位的职业是什么
1.每个部门的每个职业的薪水和或者平均值

1
2
3
4
5
6
7
8
9
10
drop view sal; #起别名
create view sal
as
select
deptno,job
sum(sal+ifnull(comm,0))# 注意ifnull
from emp
group by deptno,job;

select * from sal;

2.哪些部门的哪些职业的薪水和,薪水最高1位的职业是什么

1
2
3
4
5
6
7
8
9
10
select 
a.*
from sal a
where
(
select count(*) from sal
where a.deptno=b.deptno
and a.sal<b.sal #判断最高
)=0
order by a.deptno
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2017-2021 WANG Qi
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信