sql 一段时间内相同的只统计一次_sql—多表查询

1、表的加法

select`.... from 表1 union select ...... from 表2;

fdaf9b53be06efccca08995fa3b64c25.png

union all 会保留两个表的重复行

ae21d10c62425f87f916ff2de69d58cd.png

2、表的联结

(1)交叉连接(cross join)

(2)内联结(inner join): 保留两个表相同部分

(3)左联结(left join):保留左边表的全部和两个表相同的部分

(4)右联结(left join):保留右边表的全部和两个表相同的部分

(5)全联结(mysql不支持)

各种联结形式总结如下:

2c5c7567537ff5de54de8b61ba853366.png
图片来源:猴子知乎Live讲座《从零学会SQL:多表查询》

三、如何用sql解决业务问题

思路:翻译成大白话(理解业务需要解决什么问题)->写出分析思路->写出对应sql子句

例题

1、查询所有学生的学号、姓名、选课数、总成绩

21b53c7deb3a7a21fb69229c0c026782.png
图片来源:猴子知乎Live讲座《从零学会SQL:多表查询》

cd44c4d1b05a202084b9bef6389a4adc.png

2、查询平均成绩大于85的所有学生的学号、姓名和平均成绩

30843f1e04d1f90eeef400930244ebc9.png
图片来源:猴子知乎Live讲座《从零学会SQL:多表查询》

3bbe56f33057d8ae6386b5e69a364b3c.png

3、查询学生的选课情况:学号,姓名,课程号,课程名称(三表联结)

c989e2d7e769abe496ebcde8253266d1.png
图片来源:猴子知乎Live讲座《从零学会SQL:多表查询》

91d21edc9e4913c485f9e80f0cade9c6.png

四、case表达式

case when<判断表达式>then<表达式>

when<判断表达式>then<表达式>

when<判断表达式>then<表达式>

..... else <表达式>

end

例题:

1、查询出每门课程的及格人数和不及格人数

08a888c25cc0c4fe013fa8b582017da0.png
图片来源:猴子知乎Live讲座《从零学会SQL:多表查询》

5da0ac4d952fd843d8d007d4b40e74b4.png

2、使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计各分数段人数,课程号,课程名称。

f310e96f3d91d5ad70d29babb99840a7.png
图片来源:猴子知乎Live讲座《从零学会SQL:多表查询》

五、练习(sqlzoo)

ed82ca303ae7dffb0ffcf10d2c008d96.png

82cdb536c86a0ddc734c884ddd6550de.png

c203d4374ff74a6498a5f50e0bfe479c.png

8f974f3b7fab1e9e4eca6ba4af17dd15.png

71f03f0982d2db05d27156a4c35906f7.png

79fb9876010ab7bcc0c8bea89ffdd673.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值