当前位置: 首页 > 科技观察

Excel执行之前给大家介绍过的SQL查询函数

时间:2023-03-12 07:24:43 科技观察

,利用Excel内置的SQL查询引擎进行查询操作。通过编写SQL查询语句,可以完成Excel内置函数无法完成的工作。带上笔和纸做笔记。下面通过几个案例来介绍SQL查询语句的基本用法。如果你有类似的工作,你只需要改变几个地方。当然,如果条件允许,还是建议大家系统学习SQL语句,提高综合能力。因为网上关于Excel内置引擎的资料很少,可以用SQLSERVER(都是微软的产品,虽然有区别,但还是有很大的相似之处)教程作为模板学习,也有很多互联网上的信息。使用Excel进行数据处理无外乎两种应用场景:数据匹配(数据搜索)数据聚类(求和、平均、合计)数据资料数据资料是从GitHub上获取的COVID-19数据集。如需资料,请留言回复“ETSQL”获取练习资料。这里使用了一个函数ETSQL,它是EFunction的一个内置函数。数据材料包括全球和国内数据。案例一:数据匹配“国别”表对应各省每天的累计数据和新增数据。如果需要提取上海的每日数据信息。那么SQL语句就是:select*from[country$]asawherea.province='ShanghaiCity'对于学过SQL语句的朋友来说,Excel自带的引擎,SQL语句等关系型数据库的查询语法基本就是相同的。对于没有接触过SQL语句的朋友来说,这样理解起来很容易。select关键字是强制性的,也就是说每条语句都必须有一个信息关键字来查询。from关键字也是必须的,表示从哪里查询,Excel表格表示查询来自Sheet“Country”。where关键字也是必须的,表示是查询的过滤条件,后面跟过滤条件。本例要求“国家”Sheet中,省份等于“上海”。如果有多个条件,则使用关键字and或or连接。通过上面的语句,可以提取出上海所有的日常数据。从“Country”表中提取上海的所有信息如果想提取2020-40-20之后上海的所有数据,只需要将上面的SQL语句改为select*from[country$]asawherea.省份='上海市'anda.Date>43941,熟悉MySQL或MsSQL的朋友,Excel中没有“时间”类型数据,Excel中只有数值型数据,时间在Excel中用数字表示,43941对应2020年的那一天-40-20。当然,在实际应用过程中,可以使用公式拼接SQL语句,Excel会自动将日期转换成数值型数据进行处理。案例中,将B1和F1单元格的数据拼接成A1单元格,Excel自动生成一条完整的SQL语句。SQL拼接如果你学会了SQL查询语句,再配合ETSQL函数,你就可以告别Excel中所有的匹配函数了。当然,SQL语句没有专用函数写起来方便。但是,SQL非常适合复杂的数据匹配。对于VLOOKUP、match等函数,绝对没有这个技巧。所以没有最好的工具,只有合适的工具。案例二:数据聚合(求和、平均、计数)如果要统计上海,每天新增人数的累计总和-累计确诊数,这时候,可以应用另一个强大的功能SQL,数据聚合,这个功能很像Excel自带的数据透视表功能,相当于数据透视表的功能化。Excel语句我们写好了,只需要按F9刷新数据就OK了。基本语句是selectsum(当天新增)from[country$]asawherea.province='ShanghaiCity'上面的语句使用了SQL引擎的sum函数(需要注意两者的区别这个求和和Excel函数SUM),并统计“天”字段“新增”数据的总和,条件是省份是上海。如果我想统计上海平均每天新增多少人,应该怎么写:selectavg(newlyaddedontheday)from[country$]asawherea.province='ShanghaiCity'把sum换成avg就可以得到平均值函数就OK了。如果要统计上海有多少天新增确认记录,条件SQL语句为:selectcount(当天新增)from[country$]asawherea.province='ShanghaiCity'anda.当日新增>0count函数是统计函数,同时增加了一个条件,即添加当日新增人数大于“0”值的数据。上面介绍的聚合是通过where条件来的。如果我要统计全国所有省份的确诊病例总数,我连续写30条以上的SQL语句是不可能的!正常的SQL语句是:selecta。province,sum(a.同一天添加)来自[country$]作为一组bya.省份使用groupby关键字。这个功能是不是很像Excel的数据透视表?groupby相当于数据透视表的“行”条件,select相当于数据透视表的“列”条件,sum或count或avg相当于数据透视表的“值”统计,结果上面的统计数据是杂乱无章的。这时候稍微修改一下就可以排序selecta.province,sum(a.newlyaddedontheday)from[country$]asagroupbya.provinceorderbysum(a.newlyaddedontheday)descsortedstatistics结果,orderbykeyword为排序条件后,对sum(a.当天新增)进行排序,desc表示降序。如果要升序,可以省略或写成asc。为了增加SQL语句的可读性,建议大家这样写。小结通过上面的介绍,大家可以知道,使用ETSQL的一个函数,通过不同的SQL语句,几乎可以完成Excel内置函数的所有功能,是不是很强大?这并不是说不需要学习其他功能。SQL语句适用于解决复杂的问题。下面列举的案例需求,无法通过Excel的单一功能完成。匹配截至某日确诊病例总数TOP3的省份。各省新增确诊记录何时匹配?所有省份均匹配且高于平均水平。ETSQL是复杂的统计。因为SQL是系统知识,这里真的很难码字。不知道有没有必要录个视频系统的介绍一下Excel内置SQL引擎的基础知识。如果大家有什么需求,请留言“SQL视频关键词”,让我知道,同时加关注,以免视频更新时错过。