原标题:oracle的wm_concat()和mysql的group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别 前言 标题几乎已经说的很清楚了,在oracle中,concat...()函数和 “ || ” 这个的作用是一样的,是将不同列拼接在一起;那么wm_concat()是将同属于一个组的(group by)同一个字段拼接在一起变成一行。...select concat('aaa','bbb') from dual /*结果为:aaabbb*/ select 'aaa'||'bbb'||'ccc'||'ddd' from dual /*结果为...select concat('aaa','bbb','ccc','ddd') from dual /*mysql中执行 结果为:aaabbbcccddd*/ ---- wm_concat()的使用 我看了大多数博客对...wm_concat()这个个函数的介绍,我觉得都介绍的不是很完美,他们都是简单的说 这个是合并列的函数,但是我总结的概括为:把同组的同列字段合并变为一行(会自动以逗号分隔)。
一、前言 前几天在Python最强王者交流群【斌】问了一个Pandas数据处理的问题,一起来看看吧。 求教:将三个聚合结果的列,如何合并到一张表里?这是前两列,能够合并。...这是第三列,加权平均,也算出来了。但我不会合并。。。。 二、实现过程 后来【隔壁山楂】给了一个思路,Pandas中不能同时合并三个及以上,如下所示,和最开始的那一句一样,改下即可。...顺利地解决了粉丝的问题。另外也说下,推荐这个写法,df=pd.merge(df1, df2, on="列名1", how="left")。 三、总结 大家好,我是皮皮。...这篇文章主要盘点了一个Pandas数据处理的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了 ------------------- End -------------------
一、前言 前几天在Python最强王者交流群【斌】问了一个Pandas数据处理的问题,一起来看看吧。 求教:将三个聚合结果的列,如何合并到一张表里?这是前两列,能够合并。...这是第三列,加权平均,也算出来了。但我不会合并。。。。 二、实现过程 后来【隔壁山楂】给了一个思路,Pandas中不能同时合并三个及以上,如下所示,和最开始的那一句一样,改下即可。...顺利地解决了粉丝的问题。另外也说下,推荐这个写法,df=pd.merge(df1, df2, on="列名1", how="left")。
,将第一条sql的结果使用in操作拼接到第二条的sql SELECT DISTINCT g.*, cp.name AS cp_name,c.name AS category_name,t.name AS...使用临时表的场景 ORDER BY子句和GROUP BY子句不同, 例如:ORDERY BY price GROUP BY name; 在JOIN查询中,ORDER BY或者GROUP BY使用了不是第一个表的列...常见的避免临时表的方法有: 创建索引:在ORDER BY或者GROUP BY的列上创建索引; 分拆很长的列:一般情况下,TEXT、BLOB,大于512字节的字符串,基本上都是为了显示信息,而不会用于查询条件..., 因此表设计的时候,应该将这些列独立到另外一张表。...常见的优化SQL语句方法如下: 1)拆分SQL语句 临时表主要是用于排序和分组,很多业务都是要求排序后再取出详细的分页数据,这种情况下可以将排序和取出详细数据拆分成不同的SQL,以降低排序或分组时临时表的大小
在SQL中分拆列值和合并列值老生常谈了,从网上搜刮了一下并记录下来,以便不时之需 :) 什么叫分拆列值和合并列值呢?...就只是这样的,比如有如下表A结构及数据: Id Data 1 aa,bb 2 aaa,bbb,ccc 将该表A的Data字段数据根据 “,” 进行分拆得到如下表B Id Data 1 aa 1 bb...2 aaa 2 bbb 2 ccc 这就是表A-->表B 叫做分拆列值,表B-->表A 叫做合并列值。...一、分拆列值: CREATE TABLE t_Demo1 ( Id INT, Data VARCHAR(30) ) GO INSERT INTO t_Demo1 VALUES(1,'aa,bb...BY Id 执行结果如下图: ?
,将第一条sql的结果使用in操作拼接到第二条的sql SELECT DISTINCT g.*, cp.name AS cp_name,c.name AS category_name,t.name AS...使用临时表的场景 1)ORDER BY子句和GROUP BY子句不同, 例如:ORDERY BY price GROUP BY name; 2)在JOIN查询中,ORDER BY或者GROUP BY使用了不是第一个表的列...常见的避免临时表的方法有: 1)创建索引:在ORDER BY或者GROUP BY的列上创建索引; 2)分拆很长的列:一般情况下,TEXT、BLOB,大于512字节的字符串,基本上都是为了显示信息,而不会用于查询条件..., 因此表设计的时候,应该将这些列独立到另外一张表。...常见的优化SQL语句方法如下: 1)拆分SQL语句 临时表主要是用于排序和分组,很多业务都是要求排序后再取出详细的分页数据,这种情况下可以将排序和取出详细数据拆分成不同的SQL,以降低排序或分组时临时表的大小
InnoDB的索引,分为主键索引和辅助索引。...2)or,左右两边都应该对索引的列进行查询,只要有一边的列不是索引列,就会导致放弃使用索引。可以考虑用union代替or,这样至少可以有一部分数据用到索引。...如果查询包括GROUP BY,想要避免排序结果的消耗,则可以指定ORDER BY NULL禁止排序。 五、表拆分 对于数据量太大的表,可以考虑拆分表,以减少扫描的数据量。...例如交易明细表,可以根据用户id进行分表,把用户id进行hash,不同的hash结果对应到不同的表,再编写一个实现算法,根据id到对应的表进行增删改查即可。...3、分区 分区是mysql自带的功能,其原理是将一个表的数据存在不同的文件中,由mysql根据内部规则,自动去对应的数据文件找数据。
File group 内的文件分为 base file 和 log file, log file 记录对 base file 的修改,通过 compaction 合并成新的 base file,多个版本的...我们通过数据湖极大的减少了计算资源消耗,提升了端到端的性能。 数仓场景中,对于一张底层分析表,往往是通过多个数据源的数据组合拼接而成,每个数据源都包含相同的主键列,和其他不同的属性列。...整体设计 •底层存储可插拔,不依赖某个特定的存储系统,可以是 HDFS、KV、MySQL•轻量且易于扩展,服务无状态,支持水平扩展;存储可通过拆库/表的方式纵向扩展•与 Hive Metastore...•列级别的冲突检查即是可以有两个 instant 往同一个 file group 写,但是两个 instant 写入的schema 不可以存在交集。...•每个 instant 只写入 schema 中的部分列,log 文件中的数据只包含 schema 中的部分•Compaction 按主键拼接不同列下的数据,Parquet 文件中存储的数据拥有完整的
III 为拆包情况,图中的描述是将 123拆分成了 1和 23,并且 1和 abc一起传输。 123和 abc也可能是 abc进行拆包。甚至 123和 abc进行多次拆分也有可能。...那么从打印信息中可以看到客户端的发送次数 i和服务端的接收消息计数 i应该是相同的数。那么下面通过运行程序,查看打印结果。...上图中可以看到 【】中 167的数据被拆分为了两部分(图中画绿线数据),该情况为拆包(粘包/拆包示意图中的情况 III)。...这里使用 LineBasedFrameDecoder 和 StringDecoder(将接收到的对象转换成字符串) 来解决粘包/拆包问题。...注意,使用 LineBasedFrameDecoder 时,换行分隔符必须加,否则接收消息端收不到消息,如果手写换行分割,要记得区分不同系统的适配。
I 为正常情况,两次传输两个独立完整的包。 II 为粘包情况, 123和 abc封装成了一个包。 III 为拆包情况,图中的描述是将 123拆分成了 1和 23,并且 1和 abc一起传输。...那么从打印信息中可以看到客户端的发送次数 i和服务端的接收消息计数 i应该是相同的数。那么下面通过运行程序,查看打印结果。 ?...上图中可以看到 【】中 167的数据被拆分为了两部分(图中画绿线数据),该情况为拆包(粘包/拆包示意图中的情况 III)。...这里使用 LineBasedFrameDecoder 和 StringDecoder(将接收到的对象转换成字符串) 来解决粘包/拆包问题。...注意,使用 LineBasedFrameDecoder 时,换行分隔符必须加,否则接收消息端收不到消息,如果手写换行分割,要记得区分不同系统的适配。
列中数据,拆分为多条,以Array类型。...利用Hadoop的InputFormat API可以从不同数据源读取数据,使用OutputFormat API可以将数据写成不同的格式输出。...(3)页(Page):每一个列块划分为多个页,一个页是最小的编码的单位,在同一个列块的不同页可能使用不同的编码方式。...第一个MRJob中,Map的输出结果会随机分布到Reduce中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的Group By Key有可能被分发到不同的Reduce中,从而达到负载均衡的目的...产生数据倾斜的HQL中一定存在着分组的操作,所以从HQL的角度,我们可以将数据倾斜分为单表携带了Group By字段的查询和2表(多表)Join的查询。
不需要去用Java去写复杂的Map Reduce代码,Pig轻松的语义化处理过程。 Pig:经典思路是一大拆多小,一层变多层,让文本数据模式化,处理起来更高效,几行程序可以出上TB的数据。...2,基本操作 load 数据文件的载入,并用PigStorage来指定列的分隔符,用as 进行模式声明:字段名/类型。...group filter_subject by subject; #查看结果集-将多行数据-分组后变成一行 dump group_subject; 基于group_subject分组后的数据,我们才可以最聚合计算操作...4,QA与总结 Pig看上去和SQL很相似,但有几点不同: Pig是一种数据流编程语言,一步一步的操作,上一步的输出可以做为下一步的输入,将问题分成连贯的小步,不断逼近我们想要的数据结果,符合我们人类的工作习惯...Pig 对复杂,多值嵌套的数据结构的支持也不同于只能处理平面数据类型的SQL。但是SQL是支持在线低延迟的查询,Pig主要集中在离线的批数据处理。 结合不同场景,选择二者,我们的工作才能事半功倍。
但如果一次请求发送的数据量比较大,超过了缓冲区大小,TCP 就会将其拆分为多次发送,这就是拆包问题,也就是将一个大的包拆分为多个小包进行发送,接收端接收到多个包才能组成一个完整数据。...解决方案 对于粘包和拆包问题,通常可以使用这四种解决方案: 使用固定数据长度进行发送,发送端将每个包都封装成固定的长度,比如100字节大小。如果不足100字节可通过补0等填充到指定长度再发送。...将消息分为头部和消息体,头部中保存整个消息的长度,这种情况下接收端只有在读取到足够长度的消息之后,才算是接收到一个完整的消息。 通过自定义协议进行粘包和拆包的处理。...Netty拆包沾包处理 Netty对解决粘包和拆包的方案做了抽象,提供了一些解码器(Decoder)来解决粘包和拆包的问题。...LineBasedFrameDecoder 使用LineBasedFrameDecoder解决粘包问题,其会根据"\n"或"\r\n"对二进制数据进行拆分,封装到不同的ByteBuf实例中 /*
,这就形成了粘包问题;如果一次请求发送的数据量比较大,超过了缓冲区大小,TCP 就会将其拆分为多次发送,这就是拆包,也就是将一个大的包拆分为多个小包进行发送。...; 将消息分为头部和消息体,在头部中保存有当前整个消息的长度,只有在读取到足够长度的消息之后才算是读到了一个完整的消息; 通过自定义协议进行粘包和拆包的处理。...,第二个则是将处理之后的消息转换为字符串。...最后由EchoServerHandler处理最终得到的数据,处理完成后,将处理得到的数据交由FixedLengthFrameEncoder处理,该编码器是我们自定义的实现,主要作用是将长度不足 20 的消息进行空格补全...; } } 对于客户端,其实现方式基本与服务端的使用方式类似,只是在最后进行消息发送的时候与服务端的处理方式不同。
从而产生了拆包以及粘包的问题。 1、粘包 业务侧理想的是分别发送三个数据包到服务端,服务端根据不同的数据包进行对应的业务处理。...出现粘包、拆包的根本原因 1、客户端要发送的数据小于TCP发送缓冲区的大小,TCP为了提升效率,将多个写入缓冲区的数据包一次发送出去,多个数据包粘在一起,造成粘包; 2、服务端的应用层没有及时处理接收缓冲区中的数据...那么我们只能通过上层的协议设计来解决粘包、拆包问题,主要有以下几种方法: 1、消息定长 可以考虑客户端将每个数据包设定为固定长度(不够的可以通过补特定字符进行填充)的流数据,那么接收端在接收缓冲区中读取到约定固定长度的数据流之后...,服务端就可以根据约定的数据长度进行数据包的解析,区分不同的数据包。...3、将消息分为消息头与消息体 消息头中包含表示消息总长度(或者消息体长度)的字段,后面跟上对应的消息内容。服务端读取数据后,先解析出消息头中的内容长度大小,再将后面的内容一把读取出来。
,这就形成了粘包问题;如果一次请求发送的数据量比较大,超过了缓冲区大小,TCP就会将其拆分为多次发送,这就是拆包,也就是将一个大的包拆分为多个小包进行发送。...; B包比较大,因而将其拆分为两个包B_1和B_2进行发送,而这里由于拆分后的B_2比较小,其又与A包合并在一起发送。...将消息分为头部和消息体,在头部中保存有当前整个消息的长度,只有在读取到足够长度的消息之后才算是读到了一个完整的消息; 通过自定义协议进行粘包和拆包的处理。...; } } 对于客户端,其实现方式基本与服务端的使用方式类似,只是在最后进行消息发送的时候与服务端的处理方式不同。...(20)); // 将粘包和拆包处理得到的消息转换为字符串 ch.pipeline().addLast(new StringDecoder());
MySQL数据库开发的 36 条军规 标签:数据库 核心军规(5个) 尽量不在数据库做运算。 控制单表数量:行不超过500W条,超出分表;列不超过50个,超过拆表。.../blob类型(尽量使用varchar代替text字段),需要的时候请拆表 不在数据库存图片,请存图片路径 索引类规约(5个) 合理使用索引(改善查询,减慢更新,索引一定不是越多越好) 字符字段必须建前缀索引...Innodb主键推荐使用自增列(主键建立聚簇索引,主键不应该被修改,字符串不应该做主键) 不用外键(由程序保证约束) SQL类军规(16个) SQL语句尽可能简单(一条SQL只能在一个cpu运算,大语句拆小语句...消耗cpu、io、内存、带宽,这种程序不具有扩展性) or改写为in(针对同一字段) where a=1 or a=2 改为 where a in(1,2) or改写为union(针对不同字段 )...使用group by 去除排序加快效率 例如:group by name 默认是asc排序 改:group by name order by null 提高查询效率 请使用同类型比较(避免转换导致索引丢失
33 上面的案列中,我们定义函数的时候在函数名后面的括号里定义的参数叫做形参, 而我们调用函数的时候传入的参数叫做实参,形参是用来接收实参的。...二、参数分类 上面我们说了形参和实参,那么形参和实参在在定义和调用的时候,根据形式不同有可以分为几类, 1、根据实参进行分类 实参:位置参数、关键字参数 1.1、位置参数(未命名参数) def func...(a,b,c): print(a) print(b) print(c) add_num(11,22,33) #运行结果 11 22 33 上述案列中,的函数的三个形参是按位置接收传入的实参...形参可以分为三类:必备参数、默然参数、不定长参数 2.1、必备参数: 在调用函数的时候必须要传的参数 def add(a,b): c=a+b print(c) add(11,22) 上面函数中的...dict,再通过**拆包传入:func(**{‘e’:33,’h’:44,’d’:66,’c’:77})。
直接拆数据库 分表分区 存储引擎 ?...数据来源表 WHERE 限制条件 GROUP BY 查询的结果,按照条件字段分组 HAVING 过滤分组 ORDER BY 按照字段排序 LIMIT...尽量不要使用or,否则索引失效 尽量不要使用类型转化(显式、隐式),否则索引失效 如果主查询数据量大,则使用in 如果子查询数据量大,则使用exists 查询哪些列,就根据哪些列group by,不然会产生一个临时表...库优化 os配置修改 数据库的配置参数 数据库 应用程序 配置文件 表优化 表存储引擎 表结构(拆表) 表建立索引 慢sql:根据分析结果调整索引,开发人员修改自己的sql 主从同步...分表分区 分表 拆列:一张表多列,被拆到多张表「垂直分表」 表字段变少,行数不变 拆行:一张表某些行,被拆到另外行「水平分表」 表字段不变,行数变少 分区 把数据存到不同地方
接口进行横向拆分、纵向分层: 接口横向拆分:横向拆分,主要是指根据不同的功能模块将取拆分为独立的服务。一般拆分标准,是按照大的功能模块点来拆分。比如:商品、订单、账单、用户、公共数据。 ...可以很方便的在现有系统中新功能;可重用性,可以减少程序代码冗余,每一层都可以多种用途,满足于多种需求; 可管理性,程序分层后可以降低系统管理的难易程序,将程序分为多层后,可以将工作分解给不同的开发小组...:比如,订单数据、账单数据、商品相关的数据,采用独立的库存储 横向拆表:主要是针对数据量比较大的表,按照某一规则,分表存储(是否分表的规则是保持单标数据不要超出百万), 比如订单表...纵向分表:主要是针对表字段比较多的表,拆分为多表存储,一般拆分规则为: 对于一张表如果业务上分两次访问某一张表其中一部分数据,那么就可以根据每次访问列的不同来做拆分; 另外还可以根据列更新的频率来拆分...,例如某些列每天要更新3次,有些列从创建开始基本上很少更新。
领取专属 10元无门槛券
手把手带您无忧上云