SQL日常练习-不在表/TOP N/连续 N/百分比N大类问题

SQL框架

SQL语句书写顺序
在这里插入图片描述
SQL语句执行顺序
在这里插入图片描述
case when记录

1
CASE SCORE WHEN 'A' THEN '优' ELSE '不及格' END
CASE SCORE WHEN 'B' THEN '良' ELSE '不及格' END
2
case when CAST(salary as float) < 5000 then "五千"
else NULL end

1 查询不在表里的数据问题

例如 a学生表排除b学生表问题
a表 left join b表,然后通过b.xxx is null 来过滤b表
在这里插入图片描述

2 TOP N问题

1
在这里插入图片描述
在这里插入图片描述
2 每个部门第二高收入员工
开窗函数写法
在这里插入图片描述

3 连续n次问题

方法1 查询连续3次相同的成绩,一张表复制成三分join
在这里插入图片描述
方法2 开窗函数
在这里插入图片描述

过滤 on 和 where 的区别

在这里插入图片描述
Why ?

where是两个表同时过滤,条件不为真则完全过滤
如left join即使条件不为真也会返回左表的数据然后拼接null

例子:
表1:tab1
id size
1 10
2 20
3 30
表2:tab2 
size name
10 AAA
20 BBB
20 CCC

select * form tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name=’AAA’
1 10 10 AAA

select * form tab1 left join tab2 on (tab1.size = tab2.size and tab2.name=’AAA’)
1 10 10 AAA
2 20 (null) (null)
3 30 (null) (null)
用on时也会展示左表数据并拼接null

分组前百分之20问题

运用 ntile 分组取第一个方式
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我爱肉肉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值