sql
文章平均质量分 58
大树的困惑
这个作者很懒,什么都没留下…
展开
-
HIVE 非等值连接的解决思路
HIVE 非等值连接的解决思路hive低版本并不支持非等值连接,在表与表通过join关键字进行连接时,on 后面接的条件需要是区间式的话比如:SELECT A.COL , B.COL FROM TABLEA ALEFT JOIN TABLEB BON A.DATE<B.DATE;这样的连接条件在hivesql中是会报错的.这里提供一种解决思路背景:要统计每个基金每天的基金净值情况,如果当天没有净值数据的话,取最近一天存在净值数据的日期的数据作为当天的数据换句话说只要原创 2021-04-15 21:35:35 · 4526 阅读 · 1 评论 -
SQL取日期为当前月份的第几周思路
问题背景获取每个月的第几周包含跨年问题当前有一份从20010101到20201231的数据,现在需要获得每个日期对应在每个月中的第几周,为了实现日历展示的那种格式展示对应日期所在的是该月份的第几周。**多种日期格式:**to_char(date,‘XXXX’)YYYY:四位表示的年份YYY,YY,Y:年份的最后三位、两位或一位,缺省为当前世纪IYYY:ISO标准的四位年份MM:01~12的月份编号MON:缩写字符集表示MONTH:全拼字符集表示的月份,右边用空格填补Q:季度W:当月原创 2021-04-06 19:08:53 · 10350 阅读 · 4 评论 -
拉链表的使用场景
拉链表的使用场景拉链表,在面对处理的数据量比较大的时候,可以经常听说到,其主要的核心在于通过设置两个字段作为数据是否有效性的开关(begin_date,end_date)这样做的目的是保证在表的数据,在某一个时间区间内(时间粒度得统一,月,日,时,分…)有且仅有一条有效的数据下面介绍一种使用场景背景 表t_vip_bal_info 用于记录某商户的vip用户的账户余额,当余额有变动时才会有数据且每天(时间粒度为天)最多仅有单条数据用户每当有新的余额变动时,旧的余额相对于当前就没用了,所原创 2021-04-01 10:56:52 · 2507 阅读 · 0 评论 -
Oracle 分析函数的汇总
Oracle 分析函数的汇总测试数据1.DENSE_RANK() over()2.ROW_NUMBER() over()3.rank() over()4.cume_dist() over()5.分组统计-sum() over()6.分组统计-max() over()7.分组统计-avg() over()8.分组统计-RATIO_TO_REPORT() over()9.LAG(COL,n,default) over()10.LEAD(COL,n,default) over()11.FIRST_VALUE()原创 2021-03-26 17:55:47 · 347 阅读 · 0 评论 -
Oracle 子查询优化思路
Oracle 子查询优化思路开头: 在Oracle中,支持字段级别的子查询,允许在字段嵌套查询sql,但是在面对数据量大的情况下,其效率会变的极低问题:通过判断统计日期和最开始交易的日期之间工作日天数需要通过这个天数的量级来选择不同的费率一开始使用字段的子查询获取结果SELECT col1,col2,col3 --150 day, (SELECT count(1) FROM T_PDATES where flag=0 and DAY<20原创 2021-03-25 17:25:11 · 2050 阅读 · 0 评论 -
Oracle NULL值不参与运算判断
Oralce 中NULL 值不参与运算判断在数据分析中,设计到一些数值运算,如果其中某个值为空,会导致该数值被跳过(不是true,或者false)create table t_null_test as ( SELECT decode(round(dbms_random.value(1,2)),1,null,2) as col1 , 12 as col2 FROM dual connect by level <10)生成若干的测试数据进行测试;--取col1+col2 &g原创 2021-03-19 13:41:08 · 1253 阅读 · 0 评论 -
MongoDB 学习笔记
Mongo 学习简介mongo 是一款noSql的数据库,和mysql一样,可以通过java进行操作比起mysql,mysql中的表,在mongo中是collectionmysql中表的每一行数据,在mongo中是doc而且是以BSON格式,(JSON格式的基础上更重视数据类型)PS:mongodb在大数据领域还是比较常见的具体特点总结如下:(1)面向集合存储,易于存储对象类型的数据(2)模式自由(3)支持动态查询(4)支持完全索引,包含内部对象(5)支持复制和故障恢复(6)使用原创 2020-07-26 23:51:32 · 285 阅读 · 0 评论 -
Oracle 用group by 去重计数还是用distinct 计数
Oracle 用group by 去重计数还是用distinct 计数Oracle 对去重计数的性能比较--Oracle 聚合优化--新建测试表 带索引drop table student;CREATE TABLE student ( t_id number, t_name VARCHAR2(32), t_class VARCHAR2(32), t_num number, CONSTRAINT PK_原创 2021-02-04 18:15:20 · 1497 阅读 · 1 评论 -
使用Antlr4和neo4j解析sql生成数据地图
使用Antlr4和neo4j解析sql生成数据地图杂谈1:之前学习搭建atlas平台的时候就很好奇他是如何解析sql,然后根据sql生成对应的血缘图的,在学习spark源码的过程中认识了antlr4 这样一个可以根据自定义语法规则来解析成语法树的工具于是我就希望可以参考atlas的解析功能,将复杂的长sql解析出它的数据地图出来.杂谈2:那么有人会问了,这样做的意义在哪里.如果做过数据开发之类的工作的话,应该会遇到那种情况,维护了大量的表,但是不知道这些表究竟被谁用了,因为迭代更新,可能需要原创 2021-01-30 20:44:38 · 5266 阅读 · 5 评论 -
某小伙的Antlr4学习笔记
概览作为一款语言识别工具,它可以解析(自定义)规则的语句,生成执行树分有几个阶段1.词法分析阶段 (lexical analysis)根据我们定义的词法解析出我们对应的关键词出来2.解析阶段根据我们定义的语法对解析出来的词进行构建,生成一个语法树应用场景1.定制特定领域语言(DSL)类似hibernate中的HQL,用DSL来定义要执行操作的高层语法,这种语法接近人可理解的语言,由DSL到计算机语言的翻译则通过ANTLR来做,可在ANTLR的结构语言中定义DSL命令具体要执行何种操作原创 2020-12-12 14:46:47 · 2005 阅读 · 1 评论 -
HIVE函数大全及用例
HIVE函数大全及用例关系运算1、等值比较: =语法:A=B操作类型:所有基本类型描述: 如果表达式A与表达式B相等,则为TRUE;否则为FALSEhive> select 1 from iteblog where 1=1; >1 2、不等值比较: <>语法: A <> B操作类型: 所有基本类型描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A与表达式B不相等,则为TRUE;否则为FALSEhive> sel原创 2020-10-20 00:29:59 · 326 阅读 · 2 评论