springsecurity sql脚本_SQL基础知识总结(下)

3e1854fa7f257505d0f7b3d70d106c58.png

你好,欢迎收听极客视点。

SQL是一门古老的语言了,对于大部分SQL用户来说,主要做的是面向业务的数据工作。腾讯 CDG 数据分析师李扬洁将这部分内容细分为库表基本操作、数据查询语句、数据聚合与连接、函数应用等场景,并对不同场景中的基础知识进行了总结,供你参考。在上一篇文章中,我们分享了库表基本操作、数据查询语句的基础知识,本文继续分享其余三个场景的基础知识,如下。

数据聚合与连接

上一篇文章讲到的数据查询语句,不管怎么查询,其实并不影响原生的表结构,即原来的表是按照什么逻辑写的数据,查询结果里的数据也是基于这种逻辑,只是筛选了局部数据而已。但数据聚合与连接就不一样了,聚合会在纵向上改变原生表结构,连接则在横向上拓展了表结构。

数据聚合

要对一张表做数据聚合,其实理解了两个概念即可:维度和指标。维度是你要基于哪些字段来做聚合,指标是在这个维度之上,你想用什么汇总函数生成哪些指标。数据聚合的关键字是group by,维度里的属性值仍来自于原生表,指标则是新生成的汇总值。

数据连接

对两张表或者N张表做连接,是SQL里面非常重要的一个内容,也是最容易埋坑的一个坑点。尽管数据连接只涉及四种方式、七个语法,但其仍然是绝大部分SQL脚本的核心内容。选择合适的可靠的数据连接方式,应该是一个SQL运动员的基本功了。

函数应用

函数库,其实就像是一个数据处理与分析的百宝箱,收藏着各种场景下需要用到的车轮子。对函数库的熟悉和掌握,可以较好地提升工作效率,也让计算脚本显得轻量而简洁。毕竟站在通用函数的肩膀上,很多统计逻辑是可以一步到位的,不需要沉迷于山重水复的自主构造里。以下参考TDW的函数库分类,将日常所用的函数细分为几个子类别。

数学函数

SQL里的数学函数主要和数值处理有关,有取值函数和变换函数等。取值函数包括round四舍五入、abs取绝对值、ceil向上取整等,主要用于对具体数值的细节调整。变换函数则会改变该字段的数据分布形态,如正弦sin,余弦cos,或者开根号sqrt等。

聚合函数

在数据聚合中,选择了具体字段作为聚合维度后,便是应用各种聚合函数得到汇总值的过程。其中有简单聚合函数如count计数、sum求和、avg求平均;也可以基于分布特征,max/min取极值、std取标准差、variance取方差。另外若在聚合过程中涉及分区处理的话,也有rank、first/last_value、row_number等函数可以应用。

时间和日期函数

对时间数据的处理,同样也是SQL里的一个重要课题,主要细分为时间的加减、取值和转换这三类。其中时间加减里,又涉及不同的时间维度,比如按日维度有date_diff、date_add、date_sub等;按月维度有month_between、add_months等。时间取值函数则是在一个详细的时间戳里,取出自己想要的部分,如year、month、day、hour等。时间转换函数则是时间形式的切换,如日期格式,格林尼治时间戳格式等。

文本处理

数据类型可以粗糙地分为数值数据和文本数据,对于文本数据的处理,也有很多对应的函数。其中有一些简单取值函数,如通过length和size获得字段长度和数组大小,通过upper和lower可以切换大小写。字符串的切割与拼接,由浅入深有split、substr、concat、wm_concat等。正则表达式也是文本处理中一个特别重要的模块。

其它函数

除了以上所盘点的一些通用函数外,其实在日常工作中会有很多垂直的业务场景,在这些特定场景下也有一些特定的函数逻辑。比如涉及数组结构拆分与重构时,可以应用later view函数;涉及字段编码时,也有加密与解析函数。除此之外,还有逻辑函数、转换函数等多种特殊函数,在特定的场景下,这些函数其实也是必要的。

具体开发环境的注意点

和其它众多语言一样,SQL的编写也不能脱离其自身的开发环境,不同的数据库形态、不同的IDE,都会有一些差异点和新特性。具体开发环境的注意事项,则要在具体环境中去发现和探索。

a7a6132644a0c6d79e911c0d201ee521.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值