SQL
文章平均质量分 61
枪枪枪
见贤思齐焉,见不贤而内自省也。
君子生非异也,善假于物也。
君子博学而日参省乎己,则知明而行无过矣。
展开
-
记录一次SparkSQL union all语法错误
以前在数据库工具上执行Hive QL用到union all时直接这样写即可select aunion allselect bunion allselect c但是换到SparkSQL中执行却提示错误diagnostics: User class threw exception: org.apache.spark.sql.catalyst.parser.ParseException:mismatched input ‘union’ expecting (line 18, pos 0)原创 2021-10-11 14:33:35 · 3024 阅读 · 1 评论 -
[Hive QL] 将数据转为map类型
一个数据计算的需求中需要用到当前月以及上月的数据,不利用map数据类型的话计算起来很麻烦,这里记录一下过程。以下是根据实际业务分析出的计算逻辑。ps:24合算法30:资金31:资金平均数Q :12月=(P31*11+(P30+Q30)/2)/12P:11月=(O31*10+(O30+P30)/2)/11O:10月=(N31*9+(N30+O30)/2)/10N:09月=(M31*8+(M30+N30)/2)/9M:08月=(L31*7+(L30+M30)/2)/8L:07月=(K31*原创 2021-06-09 17:55:09 · 1702 阅读 · 0 评论 -
Hive QL 依据日期维表将一年中的每个月补齐成指定天数(例如33天),补齐的日期用改月最后一日的日期
思路:依据天数来进行补齐,小于33天的依次用最后日期拼上对应的天数当天数为28天时,年-月-日 29天,年-月-日 30天,年-月-日 31天,年-月-日 32天,年-月-日 33天,使用union all 将其它天数的处理结果上下拼接排除日期为null的行selectf.zdate,f.numfrom(selectcase when count(t1.zdate) = '28' then concat(t1.yearmonth,'-28') else null end as原创 2021-04-22 11:30:23 · 810 阅读 · 0 评论 -
Hive QL 获取某月的天数
资料:Hive-获取本月的第一天,本月的最后一天,本月的天数https://blog.csdn.net/H_X_P_/article/details/108161834实际使用如下:datediff(last_day(concat(t1.zyear,"-",t1.zmonth,"-","10")),date_sub(concat(t1.zyear,"-",t1.zmonth,"-","10"),dayofmonth(concat(t1.zyear,"-",t1.zmonth,"-","10")).原创 2021-04-20 15:00:05 · 6751 阅读 · 0 评论 -
Hive UDF、UDAF、UDTF 使用
因为需要一个开始日期到结束日期的日期维度表(原本想用别的方式生成后导入hive,但是比较麻烦),于是查了资料后看到如下写法:使用HiveSQL实现开始到结束日期之间的所有日期https://blog.csdn.net/JnYoung/article/details/106097733select tmp.*, t.*, date_add(start_date, pos) as mid_datefrom( select '1' as原创 2021-04-13 15:24:49 · 326 阅读 · 0 评论 -
[SQL随笔] 关于 XXX over( partition by XXX)的记录,ps:(也就是开窗函数)
文章目录over( partition by ) 函数简介row_number over (partition by fage order by fage desc)擦,从来没想到sql的水这么深,/(ㄒoㄒ)/~~刚接触这个确实有些懵圈over( partition by ) 函数简介在 ISO SQL中被称为开窗函数,在orcale中被称为分析函数,Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只原创 2021-03-11 17:34:13 · 339 阅读 · 0 评论 -
MySQL
分组数据过滤分组:having子句where过滤行having过滤分组having支持所有where操作符优先级:where > group by > having > order by182. 查找重复的电子邮箱select Email from Person group by (Email) having count(Email)>1;if 表达式IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0原创 2021-01-04 17:50:42 · 564 阅读 · 0 评论 -
mongodb 多表联合查询
db.app_examine_interception.aggregate( [ { $match:{ $or:[{'error_no':'105'},{'error_no':'103'}] } }, { $lookup:{ from:"project", localField:'publis.原创 2020-11-26 18:41:59 · 7677 阅读 · 0 评论