数分组团学习第二周

作者: Bouwun_Tsui | 来源:发表于2020-09-22 00:08 被阅读0次

    又到了一周的总结,这周过的十分的充实,无论是工作还是学习。工作上加班加成狗,学习上围绕这Mysql45题。
这一次的文章po的不及时,主要是自己的时间安排有问题。临时的加班和参加同学的婚礼导致了。在此诚挚道歉。

Mysql45

在做45题前我还是老老实实的翻了下以前在学校的书,并且回顾了一下知识点(主要是连接)。

sql 各种连接

上图,此图特别鸣谢菜鸟教程独家赞助。

sql-join.png

LEFT JOIN左连接

  • LEFT JOIN返回A表(左表)的全部行和B表(右表)满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。

RIGHT JOIN 右连接

  • RIGHT JOIN返回B表(右表)的全部行和A表(左表)满足ON条件的行,如果右表的行在左表中没有匹配,那么这一行左表中对应数据用NULL代替。

inner join 内连接

  • 如果表中有至少一个匹配,则返回行
    INNER JOIN产生的结果集中,是A表和B表的交集。

full outer join 全外连接

  • FULL JOIN 会从左表 和右表 那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替。
  • on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。
  • where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left/right join 的含义(必须返回左表/右表的记录)了,条件不为真的就全部过滤掉。

在做题前要了解一下数据库各个表的关系,最好的办法就是画ER图,这样子可以快速地想到解题思路。
**********接下来就是做题啦*************
此处略去一万字............

这里记录一下第14题,主要是这题太长了,看起来就很吓人
我也被吓懵了,以下是参考了大石师兄的思路写的。

题目是查询各科成绩最高分、最低分和平均分: 以如下形式显示:课程 ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90 要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列

首先是要求不同的成绩分数、同时输出课程号、选修人数,按人数降序、课程号升序排列。
接着是求各种分数,主要是利用聚合函数或者是case when 处理

select
sc.CId,
max(sc.score)as 最高分,
min(sc.score)as 最低分,
AVG(sc.score)as 平均分,
count(*)as 选修人数,
sum(case when sc.sorce>=60 then 1 else 0 end)/count(*) as 及格率,
sum(case when sc.sorce>=70 and sc.sorce<=80 then 1 else 0 end)/count(*) as 中等率,
sum(case when sc.sorce>=80 and sc.sorce<=90  then 1 else 0 end)/count(*) as 优良率,
sum(case when sc.sorce >90 then 1 else 0 end)/count(*) as 优秀率
from sc
GROUP BY sc.CId;

这里提到了case when,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略
case when else end 其实翻译起来很简单就是if-else语句

 case                           -------------如果
    when  条件   then xxx        -------------满足条件,则返回值是xxx      
    else    yyy                 -------------其他的返回yyy
    end                      ----------------结束

最后就是对人数降序、课程号升序

from sc
GROUP BY sc.CId
ORDER BY count(*) DESC,sc.CId asc;

其余的题目下次在做分享。

相关文章

  • 数分组团学习第二周

        又到了一周的总结,这周过的十分的充实,无论是工作还是学习。工作上加班加成狗,学习上围绕这Mysql45题。...

  • 数分组团学习第一周

        第一次将自己的东西po到网上,之前都是保存在本地,有些许的羞涩。但是作为一个UGC社区(上次活动所学),社...

  • 数分组团学习第三周欠条

    国庆节,将文章整理poi到学习小组里

  • 有一种尴尬叫做:一方熟,一方想假装不熟

    国庆黄金周,又名,婚礼黄金周。 听过组团开黑的,没听过连结婚也组团的,重点是异地“组团”!这不,光电子请柬就收了两...

  • 晓红周检视一月第二周

    没有反思的人生不值得过 #周检视#第41周20190113 本周关键词:组团学习成功 快速阅读收效 本周计划完成:...

  • 刻意练习训练营感想(1)

    刻意训练营--新生大学的品牌学习社群,我来了。一周学习复盘! (1)组队 找队友,组团队,让我...

  • 晓红周检视一月第一周

    没有反思的人生不值得过 #周检视#第40周20190105 本周关键词:组团学习 本周计划完成:整理没完成 本周总...

  • 2018-03-10

    Python第二周学习总结 导读:这是python学习的第二周,在第二周,学习了大量的python基础,其中有字符...

  • 组团学习《活法》

    活动目的 用7天的时间,学习《活法》,提高心性,磨练灵魂。 活动形式 #打卡开始时间:5月2日, #建群时间:4月...

  • 统计学第二章 计量资料的统计描述

    第二章 计量资料的统计描述 知识清单: 求极差(range),做频数分布表和频数分布图(graph of freq...

网友评论

    本文标题:数分组团学习第二周

    本文链接:https://www.haomeiwen.com/subject/pkvvyktx.html