美文网首页数据蛙数据分析每周作业
【数据蛙·week1】SQL进阶总结

【数据蛙·week1】SQL进阶总结

作者: saikirao | 来源:发表于2020-06-28 17:33 被阅读0次

WEEK1的课程主要还是围绕在SQL进阶部分,对我而言更多的还是复习和补缺了。同时,也通过45题的强化来巩固知识点,尤其是对于某些join和函数用法有了更多的体会。

一、SQL的复习和补缺

1、group by的标准用法是需要把所有聚合的部分都放入其中,但是mysql数据库的兼容性能更高,所以允许不把需要聚合的部分放到group by中。所以,我的想法还是尽量规范标准,这样比较好的习惯,有助于后续的学习以及到其他平台如hive上的代码能力。

2、排序的一些用法:order by在有多个字段为标准排序时候,需要分别在字段名后面注明排序的方式,而不是所有的默认按照最后的那个字段指定方式排序。还有就是limit的灵活用法,limit(a,b)表示从a行开始的b行数据会被选出来。这种可以用来查看某一指定行的数据。例如,中位数其实也可以用这个方法来处理,但是我们更习惯用row_number()over或者直接估计的方式来计算。

3、view的一些高级用法:工作中倒是有用到过view,但是对于view到底是怎么操作的逻辑现在才搞明白。最大的感受是,访问view时候的速度会很慢,但是view的好处是不占据空间,而且会随着原来查询的语句或者表的变化而随之变化。不用担心会错过表中的什么变化。

4、事务:事务定义的是一系列的操作序列,只有所有的行为都完成了才算结束这个事务。如果这个事务在执行一半的时候停止了,那么整个事务的执行就中断了,之前的操作也不会被记录。

5、索引:索引是用来优化搜索,适合速度慢数据量大的情况。反之,则不适合。

6、时间函数:时间函数的运用非常重要,尤其是在将字符串和时间能相互转换,以及对于时间的运算。(1)字符串转时间:str_to_date(str, format),需要将str的格式指定到format里面,这样才能让这个函数明白这个str是怎么构成的;(2)时间转字符串:date_format(time, format),同样也是要告诉这个函数,时间是如何构成的,然后转化为字符串,另外注意这里也可以改写时间的格式;(3)时间的运算,关注的是日期的偏移:date_sub(date, INTERVAL expr type)表示将date进行格式为type的时间格式,数量为expr的增加偏移;date_add(date, INTERVAL expr type)对应为减少偏移;(4)时间差:timestampdiff(unit, begin, end),将end与begin两个时间之间做差,然后以unit的格式输出,这个unit可以自行指定。个人感觉比较常用包括date_format,既可以转化为时间,也可以改写timestamp格式到date格式;还有就是timestampdiff计算时间差,虽然另外可以通过格林尼治时间的秒来转化,但是这个更加简单。

二、45题总结

零零散散花了大概3天总共4个小时把45题做完,没有想象中的难,不过覆盖了很多的点。

(1)自连接的使用:同一张表的left join 可以查出所有涉及同一段比较的信息(第1题)。当然我觉得也可以分开用两个子查询来使用,但是自连接的效率会更高。

(2)left join的on对比where:如果需要把left join出来中为可能为NULL的值也要选出来的话,需要把筛选的条件放到on后面,这样会把left join结果是NULL的也带出来。但是,如果把筛选条件放在where后面,那么NULL值会被过滤掉。

(3)开窗函数和函数的使用:对于涉及排名的问题,我之前一直不明白为什么不能使用row_number(),后来才知道低版本的mysql(8.0以下的版本)是不支持开窗函数的使用。相反,只能用自变量的函数来解决。不过,后来我在网上搜索相关资料的时候,也看到可以自连接的用法来实行,然后通过计数来得到排名,感觉这个方法好像更巧妙了。

(4)化零为整的group_concat(x order by x):如果要比较同一字段中的所有的数据,则可以通过group_concat来把这些字段合并在一起,然后比较即可。我感觉这种用法还是很灵活的,需要在实践中多多尝试和练习。

接下来的目标想把开窗函数再研究一下,然后把牛客网和leetcode上的题目也刷一遍。

相关文章

  • 【数据蛙·week1】SQL进阶总结

    WEEK1的课程主要还是围绕在SQL进阶部分,对我而言更多的还是复习和补缺了。同时,也通过45题的强化来巩固知识点...

  • 数据蛙-SQL进阶

    这是加入数据蛙的第一周,完成了SQL进阶的课程。 SQL部分的内容因为之前都学习过,所以就当重新过一遍知识点。里面...

  • 数据蛙-Python进阶

    这是漫长的一周,本周完成了Python的进阶模块,主要是pandas、numpy、matplotlib、seabo...

  • 数据库基础和SQL基础总结

    本文会总结下数据库知识,SQL基础,常用SQL语句总结; 一、数据库基础相关概念 二、数据库重点知识点 三、数据库...

  • 第二章 Senior进阶 数据库

    第二章 Senior进阶 数据库 一、数据库管理系统 二、SQL语句 三、iOS的数据库技术实现

  • Mysql总结

    最近又重新复习了一遍SQL的基础和进阶知识,SQL可以很基础也可以很复杂,写一篇总结来梳理自己的知识脉络 SQL是...

  • 每天一SQL语句(03):SQL 语句进阶篇-下

    【开篇】SQL 语句进阶篇-下 【1】SQL 约束 1、约束用于限制加入表的数据的类型。可以在创建表时规定约束(通...

  • 数据蛙作业总结

    四个页面操作: 1.冻结窗格 冻结首行:视图-冻结窗格-冻结首行 冻结首列:视图-冻结窗格-冻结首列 冻结任选行/...

  • week 8

    视频总结:视频范围:week1 The recipe for deducing square root canno...

  • MySQL优化

    数据库SQL优化大总结之 百万级数据库优化方案

网友评论

    本文标题:【数据蛙·week1】SQL进阶总结

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