postgresql数据合并 多个数据合并为一个操作
  • 作者:admin
  • 发表时间:2021-04-27 07:51
  • 来源:未知

本文主要介绍postgresql数据合并,以及将多个数据合并为一个的操作,有很好的参考价值,希望对大家有所帮助。来和边肖一起看看。

对于主表中的一条记录,它对应于明细表中的96条数据,每条数据相隔15分钟。明细中没有96条数据对应主表中的一个日期trade_date,每个明细中都有一个start_time字段,即明细中每96条数据中的第一条数据为00336000。

第二项是00:15,第三项是00:30,以此类推,直到2:45。现在,日程中的96项数据应该合并成24项,即第一项的start_time为00:00,第二项为01336000,第三项为02:00。

SQL : select max(de . bid _ num)report _ num,concat(to _ char(to _ TIMESTAMP)(concat(ru . trade _ date,",de.start_time),' YYYYY-MM-DD hh 24: mI ')33603360 TIMESTAMP NORTH ZONE,' HH24 ',' :00 ')DD from quote _ trade _ rule ru LEft JOICE quote _ trade _ rule _ detail de on ru . trade _ rule _ id=de . trade _ rule _ id

在哪里

1=1

AND ru . market _ id=' a 29 c 81 ed-2 BAF-4c 42-881 a-f1 e 64 a 41 E1 b 0 '

AND to_char(ru.trade_date,' YYYY-MM-DD')='2018-10-17 '

和ru.rule_type='2' GROUP BY dd,trade_date ORDER BY dd,trade_date

将10个主表数据对应的960个明细数据合并成以下24个数据:

补充:Postgresql中执行计划的合并连接

合并连接

一般来说,散列连接的效果比合并连接好。但是,如果源数据上有索引或者结果已经排序,那么在排序合并联接时就不需要排序,那么合并联接的性能会比散列联接好。

在下面的例子中,人的id字段和德唐山百度优化pt01的depto字段都有索引,从索引中扫描出来的数据已经排序,可以直接取Merge Join:

high go=# explain select people . id from people,dept 01 where people . id=dept 01 . dept no;

查询计划

-

合并连接(成本=0.86.64873.59行=1048576宽=4)

merge cond :(people . id=dept 01 . dept no)

-仅索引扫描使用人员对人员(成本=0.44.303935.44行=10000000宽=4)

-在dept01上使用idx_deptno仅索引扫描(成本=0.42.51764.54行=1048576宽=2)

(4行记录)

如果删除dept01上的索引,您会发现dept01首先被排序,然后在执行计划中执行合并连接。示例如下:

high go=# explain select people . id from people,dept 01 where people . id=dept 01 . dept no;

查询计划

-

合并连接(成本=136112.80.154464.29行=1048576宽=4)

merge cond :(people . id=dept 01 . dept no)

-仅索引扫描使用人员对人员(成本=0.44.303935.44行=10000000宽=4)