天天看点

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

1、表的加法

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

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

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

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

2、表的联结

(1)交叉连接(cross join)

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

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

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

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

各种联结形式总结如下:

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

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

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

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

例题

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

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

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

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

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

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

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

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

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

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

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

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

四、case表达式

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

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

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

..... else <表达式>

end

例题:

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

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

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

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

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

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

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

五、练习(sqlzoo)

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