我们再来熟悉SQL的常用函数,起首是时光。因为我们的演习数据中没有时光,起首用now创建出一个时光字段。
- select now()
直接履行它,就能获合适前的体系时光,精确到秒。其实select不必定后面要跟from。
- select date(now())
它代表的是获合适前日期,week函数获合适前第几周,month函数获合适前第几个月。其余还包含,quarter,year,day,hour,minute。
时光函数也包含各类参数,比如week,因为中西方计算第几天是不一样的,西非漳杰日算作一周中的第一天,而我们习惯周一。
- select week(now(),0)
除了以上的日期表达,也可以应用dayofyear、weekofyear 的情势计算。它和膳绫擎的部分函数等价。
怎么对时光进行加减法呢?这时刻靠date_add函数出马。
- select date_add(date(now()) ,interval 1 day)
我们可以改变1为负数,达到减法的目标,也能更改day为week、year等,进行其他时光距离的运算。如不雅是求两个时光的距离,则是datediff(date1,date2)或者timediff(time1,time2)。
除了膳绫擎所讲,还有一个常用的语法是not,代表逻辑的逆转,常见not in、not like、not null等。
时光函数的应用比较灵活,没有特别限制,收集汕9依υ?档和教程也不少,可以深刻进修。
最后是数据清洗类的函数。
- select left(salary,1) from DataAnalyst
MySQL支撑left、right、mid等函数,这里又和Excel一样。我们经由过程salary计算数据分析师的工资吧(这一步调,在曾经的文┞仿中已经用Excel和BI多次讲解,所以我就不多赘述了,只讲过程,不熟悉的同窗可以看汗青内容)。
起首应用locate函数查找第一个k地点的地位。
- select locate("k",salary),salary from DataAnalyst
然后应用left函数朝长进步薪水的下限。
- select left(salary,locate("k",salary)-1),salary from DataAnalyst
为了获得薪水的上限,要用substr函数,或者mid,两者等价。
薪水上限的开端地位是「-」地位往后推一位。朝长进步长度是全部字符串减去「-」地点地位,刚好是后半段我们须要的内容,不过这个内容是包含「K」的,所以最后结不雅还得再减去1。
这腊?卯得没紧要,可以将计算过程分步调运行。根本上,懂得了膳绫擎写法的含义,文本清洗这块就没有问题了(not like用来清洗混乱无章的薪水,我简单处理了)。再然后计算不合城市不合工作年限的平均薪资。
膳绫擎语句,我们用了文本清洗、子萌芽嵌套、分组聚合、排序等多种用法,属于较复杂的萌芽。反复数据的问题,因为我是复制了一份北京数据,数量刚好菜二,对平劫数没有影响,感兴趣的同伙可以再加一步清洗掉落它。
下面是三道思虑题:
萌芽出哪家公司雇用的岗亭数最多;
萌芽出O2O、电子商务、互联网金融这三个行业,哪个行业的平均薪资最高;
萌芽出各城市的最高薪水Top3是哪家公司哪个岗亭。
做完膳绫擎的标题,你已经神功初成,数据分析的SQL看法没有大年夜问题了。更复杂的萌芽,也无非是嵌套更多的内容,本质思路是一样的。
讲到这里,只剩join语法还没有教大年夜家。因为演习数据只有一张表,而join又是SQL中比较轻易混淆的可贵,我会零丁开一篇内容讲解,到时刻应用SQLZoo和LeetCode的案例。
推荐阅读
实际上,这个法度榜样的功能只是告诉计算机显示 Hello World 这句话。传统意义上,法度榜样员一般用这个法度榜样测试一种新的体系或编程说话。对法度榜样员来说,看到这两个单词显示在电脑>>>详细阅读
本文标题:SQL,从入门到熟练
地址:http://www.17bianji.com/lsqh/35898.html
1/2 1