哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验
一位上进心十足的【大数据领域博主】!
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程,B站及腾讯课堂讲师,直播量破10W
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
SQL对于现在的互联网公司产研岗位几乎是一个必备技能,但仅会SQL的话,应该是什么都做不了。
1.如果你是数据分析师,你需要熟练地把自己脑子里的数据和指标需求翻译成SQL逻辑去查询数据,进而完成自己的数据分析报告等,你的产出是分析报告,而不是SQL代码;
2.如果你是数仓工程师(偏应用层),你需要根据业务逻辑去设计模型,编写调度任务去产出数据,以供业务人员使用,你的产出是数据模型和表;
3.如果你是算法工程师,你可能需要用SQL来实现用户标签、特征工程等工作,但是这些是为你的模型训练评估做基础准备工作,你的产出是可以提升某些指标的算法模型。
所以,SQL每个人都要用,但是用来衡量产出的并不是SQL本身,你需要用这个工具,去创造其它的价值。
IT邦德老师带你成为SQL高手,那我们开始吧~
本文案例导入以下sql文本即可,通过百度网盘下载
mysql> source h:\db_school.sql
网盘链接:https://pan.baidu.com/s/1rvJhB6it8rvOMeqMjRAGlg?pwd=0hx1
查询学生总人数
select count(*) from tb_student;
查询选修了课程的学生总人数
select sum(classNum) from tb_class;
计算选修课程编号为‘21001’的学生平均成绩。
select avg(score) from tb_score where courseNo=‘21001’;
计算选修课程编号为‘21001’的学生最高分。
select max(score) from tb_score where courseNo=‘21001’;
查询各个课程号以及相应的选课人数。
select courseNo,count(*) from tb_score group by courseNo;
查询每个学生的选课门数、平均分和最高分
select studentNo,count(courseNo),avg(score),max(score)
from tb_score group by studentNo;
查询平均分在80分以上的每个同学的选课门数、平均分和最高分。
select studentNo,count(courseNo),avg(score),max(score)
from tb_score group by studentNo having avg(score)>80;
查询有2门以上(含2门)课程的成绩大于88分的学生学号及(88分以上的)课程数。
select studentNo,count(courseNo)
from tb_score where score> 88 group by studentNo
having count(courseNo)>=2;
查询所有学生选课的平均成绩,但只有当平均成绩大于80的情况下才输出。
select studentNo,avg(score)
from tb_score group by studentNo having avg(score)>80;