sql开发进阶
1
神芷迦蓝寺
神芷迦蓝寺,江楼月美人
展开
-
基于多库通用SQL代码转换的新系统MSE介绍
MSE是一种多库并用的代码在线转换系统工具。摒弃一库一写,本地函数等复杂多变的应对方式,采取字符转换高效简洁地实现数据分析常用的DDL和DML语句实时转换,一套代码,多库通用原创 2022-10-24 14:13:51 · 1013 阅读 · 0 评论 -
日增进:hash分表概论
分库分表原创 2022-10-03 23:13:09 · 694 阅读 · 0 评论 -
Hive 中的时间加减暨间隔函数INTERVAL
sql计算时,一般我们来做时间加减会unix_timestamp和from_unixtime结合使用:先把时间unix距1970年至今的整数秒,再进行加减就达到了时间前后的目的,详见我另一篇blog:https://blog.csdn.net/mochou111/article/details/104520108现在我们来认识一个在时间加减上更为简便的函数:INTERVAL举例说明,我们想要当前时间十秒前的时间select current_timestamp() - INTERVAL 10.原创 2020-08-14 09:35:09 · 15071 阅读 · 4 评论 -
HiveSQL的字符切分:substr与instr的完美结合
在sql查询中,诸如substr,left,right等字符切分函数的应用场景非常大,只需要指定字符,开始序位,结束序位就能很方便的切分得到我们想要的结果,但是对于数据序位不统一的,比如一个name字段里有%test1#,%test#,%fshkfjdshfkds#,我们想要两个%里的结果,只不过%的序位不是唯一的,就不能直接substr了这时候就需要我们的强大函数instr,该函数是返回某字符在字符串里的序位,比如instr('test1','e') 则返回2那么我们把substr与instr结合原创 2020-07-07 16:00:46 · 4044 阅读 · 0 评论 -
hivesql实现多行转一行中的collect_list与collect_set的区别
行转列是sql中常用语法,通常最普遍的做法是使用max,sum再配合case when 来做到,见之前一个blog:是的我又来推销我的blog哈哈哈哈哈嗝儿~而对于多行转一行的可以使用函数来实现,由于现在hive,spark 使用较为普遍,这里我们拿里面的两个函数collect_list和collect_set来举例说明,MySQL里也有对应的多行转一行——group_concatcollect_list和collect_set都是用来做多行结果转到一行的,他们的区别是前者不去重,后者去重,(不难理原创 2020-05-13 16:00:11 · 6218 阅读 · 0 评论 -
大数据Spark SQL常用语言
建表-- 分区表建表create table if not exists project1.test1_liqb_dt ( id bigint comment 'id', name string comment '姓名')partitioned by ( ds bigint comment '日分区')comment 'test'lifecycle 31 ;...原创 2020-04-03 16:49:00 · 1749 阅读 · 5 评论 -
提高SQL查询效率的30种方法
本文转载微笑点燃希望的文章,原文链接1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有nul...转载 2019-06-17 15:42:37 · 583 阅读 · 0 评论 -
大数据平台SQL编码开发规范--转自阿里云DataWorks
本文向您介绍SQL编码的基本原则和详细的编码规范。编码原则SQL代码的编码原则如下:代码功能完善,健壮。 代码行清晰、整齐,具有一定的可观赏性。 代码编写要充分考虑执行速度最优的原则。 代码行整体层次分明、结构化强。 代码中应有必要的注释以增强代码的可读性。 规范要求非强制性约束代码开发人员的代码编写行为,在实际应用中在不违反常规要求的前提下允许存在可理解的偏差本规范在对日常...转载 2018-11-23 16:38:57 · 1415 阅读 · 0 评论 -
sql实现时间段切分:每隔x分钟出一份高速门架车流量
业务场景:我们需要查询从表T里查询某一天按照5分钟为一段间隔通过高速门架的车流量。部分脱敏数据如下表T里包含time,id,chepai,部分数据为(’2020-02-23 00:43:27','某高速门架0010','浙XXXXXX')按照正常情况下我们的限定where条件是time >= '2020-02-23 0:00' andtime < '2020-02-2...原创 2020-02-26 18:33:08 · 1389 阅读 · 0 评论 -
大数据Spark Sql中日期转换FROM_UNIXTIME和UNIX_TIMESTAMP
众所周知,数字整型用来大小比较和计算运算要比字符型快的多,因此部分业务需要把时间字段转化为整型方便业务的快速计算和到达,这个整形数字是选定的日期距UTC时间'1970-01-01 00:00:00'开始的秒数,目前为十位,比如常用来举例的1234567890,但毕竟数字不方便观察,后续还需要把这些时间数字转换为真正的时间字段这里就需要两个函数来进行转换UNIX_TIMESTAMP和FRO...原创 2020-02-26 17:54:41 · 11805 阅读 · 0 评论 -
MySQL实现窗口函数row_number():选取班级里每科最高成绩的同学
有这样一组数据:Name Subject Score 小明 语文 66 小明 数学 67 小明 英语 69 小红 语文 65 小红 数学 99 小红 英语 88 小强 语文 60 小强 数学 72 小强 英语 92 我们...原创 2019-12-18 10:49:44 · 2186 阅读 · 0 评论 -
sql如何行转列,列转行
我们都知道在sql查询中,union 是增行,join是增列,但是如果碰到需要行转列,列转行时,一味的使用 join来完成则会变的异常繁杂。如把一天24小时的行转换成列,则需要join24次,既不方便管理也使sql运行效率很慢,能脱裤子就解决的非要跑到高山游到海底行转列那么如何行转列呢,假如有一张表T,字段有name,subject,score,数据如下Name Subjece ...原创 2019-12-16 16:53:56 · 1265 阅读 · 2 评论 -
PostgreSQL字符切割:substring函数详介
作为当前最强大的开源数据库,Postgresql(以下简称pg)对字符的处理也是最为强大的,首先他也有substr,trim等其他数据库都有的普通函数,这里我们介绍他更强大的一个函数substring,可以像python,java等编程语言一样使用正则表达式,强大到极点在此之前我们先了解一下正则表达式最基础的四个 %代表一个或多个字符 _代表一个字符 ^代表字符前 ...原创 2019-09-16 17:11:42 · 37623 阅读 · 2 评论 -
数据库报错:派生表‘a’不可更新,因为派生表中的某一列是派生的或是常量
我们在对数据表进行update,delete等DML操作时,如果数据库版本过低,例如sql server 2008以下,可能会出现这个报错问题:派生表‘a’不可更新,因为派生表中的某一列是派生的或是常量。这个报错是因为数据库系统版本过低,不支持派生表操作,派生表就是由查询的结果集生成的表,可以简单理解为视图,而不是真正意义上的事实表,如下例:update a set a.col1 = 0...原创 2019-09-04 14:24:32 · 943 阅读 · 0 评论 -
大数据开发 | SQL类经典场景汇总及解答
1. 有一张学生成绩表(Grade),含有Student,Subject,Grade1三个字段,其中Subject共有五门,Grade1 >= 60 为及格,其中存在着缺考情况,若缺考则表里会少一条数据,比如小明五门课都考了,则表里他有五条数据,小华缺考了两门,则表里只有他三条数据,缺考则该科目不及格,所有科目全部及格的算优秀,用sql查出优秀的有多少人-- 子查询先查出来五门课全...原创 2019-08-09 15:26:26 · 1612 阅读 · 0 评论