服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - PostgreSQL - postgresql数据合并,多条数据合并成1条的操作

postgresql数据合并,多条数据合并成1条的操作

2021-04-15 19:08夏目-木子 PostgreSQL

这篇文章主要介绍了postgresql数据合并,多条数据合并成1条的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

第二条为00:15,第三条为00:30,依次类推,直到23:45 ,现在要将明细表中的96条数据合并成24条,即第一条数据中start_time为00:00,第二条为01:00,第三条为02:00

?
1
2
3
4
5
6
sql:select max(de.bid_num) report_num,concat(to_char(to_timestamp(concat(ru.trade_date,' ',de.start_time), 'YYYY-MM-DD HH24:mi') :: TIMESTAMP WITHOUT TIME ZONE, 'HH24 '),':00') dd from quote_trade_rule ru LEFT JOIN quote_trade_rule_detail de on ru.trade_rule_id = de.trade_rule_id
WHERE
  1 = 1
AND ru.market_id ='a29c81ed-2baf-4c42-881a-f1e64a41e1b0'
AND to_char(ru.trade_date, 'YYYY-MM-DD') ='2018-10-17'
AND ru.rule_type ='2' GROUP BY dd ,trade_date ORDER BY dd,trade_date

postgresql数据合并,多条数据合并成1条的操作

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

postgresql数据合并,多条数据合并成1条的操作

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

Merge Join

 

通常情况下,散列连接的效果比合并连接好,但如果源数据上有索引,或者结果已经被排过序,在执行排序合并连接时,就不需要排序了,这时合并连接的性能会优于散列连接。

下面示例中,people的id字段和dept01的depto字段都有索引,且从索引扫描的数据已经排好序,可以直接走Merge Join:

?
1
2
3
4
5
6
7
8
highgo=# explain select people.id from people,dept01 where people.id=dept01.deptno;
                      QUERY PLAN
-------------------------------------------------------------------------------------------------
 Merge Join (cost=0.86..64873.59 rows=1048576 width=4)
  Merge Cond: (people.id = dept01.deptno)
  -> Index Only Scan using people_pkey on people (cost=0.44..303935.44 rows=10000000 width=4)
  -> Index Only Scan using idx_deptno on dept01 (cost=0.42..51764.54 rows=1048576 width=2)
(4 行记录)

删除dept01上的索引,会发现执行计划中先对dept01排序后在走Merge Join,示例如下:

?
1
2
3
4
5
6
7
8
9
10
11
highgo=# explain select people.id from people,dept01 where people.id=dept01.deptno;
                      QUERY PLAN
-------------------------------------------------------------------------------------------------
 Merge Join (cost=136112.80..154464.29 rows=1048576 width=4)
  Merge Cond: (people.id = dept01.deptno)
  -> Index Only Scan using people_pkey on people (cost=0.44..303935.44 rows=10000000 width=4)
  -> Materialize (cost=136112.36..141355.24 rows=1048576 width=2)
     -> Sort (cost=136112.36..138733.80 rows=1048576 width=2)
        Sort Key: dept01.deptno
        -> Seq Scan on dept01 (cost=0.00..16918.76 rows=1048576 width=2)
(7 行记录)

上面执行计划中,可看到“Sort Key: dept01.deptno”,这就是对表dept01的id字段进行排序。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://blog.csdn.net/weixin_39702323/article/details/83183337

延伸 · 阅读

精彩推荐
  • PostgreSQLPostgreSQL标准建表语句分享

    PostgreSQL标准建表语句分享

    这篇文章主要介绍了PostgreSQL标准建表语句分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    码上得天下7962021-02-27
  • PostgreSQLpostgresql 数据库中的数据转换

    postgresql 数据库中的数据转换

    postgres8.3以后,字段数据之间的默认转换取消了。如果需要进行数据变换的话,在postgresql数据库中,我们可以用"::"来进行字段数据的类型转换。...

    postgresql教程网12482021-10-08
  • PostgreSQL分布式 PostgreSQL之Citus 架构

    分布式 PostgreSQL之Citus 架构

    节点 Citus 是一种 PostgreSQL 扩展,它允许数据库服务器(称为节点)在“无共享(shared nothing)”架构中相互协调。这些节点形成一个集群,允许 PostgreSQL 保存比单...

    未知802023-05-07
  • PostgreSQL深入理解PostgreSQL的MVCC并发处理方式

    深入理解PostgreSQL的MVCC并发处理方式

    这篇文章主要介绍了深入理解PostgreSQL的MVCC并发处理方式,文中同时介绍了MVCC的缺点,需要的朋友可以参考下 ...

    PostgreSQL教程网3622020-04-25
  • PostgreSQLPostgresql查询效率计算初探

    Postgresql查询效率计算初探

    这篇文章主要给大家介绍了关于Postgresql查询效率计算的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Postgresql具有一定的参考学习价...

    轨迹4622020-05-03
  • PostgreSQLpostgresql 中的to_char()常用操作

    postgresql 中的to_char()常用操作

    这篇文章主要介绍了postgresql 中的to_char()常用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    J符离13432021-04-12
  • PostgreSQLRDS PostgreSQL一键大版本升级技术解密

    RDS PostgreSQL一键大版本升级技术解密

    一、PostgreSQL行业位置 (一)行业位置 在讨论PostgreSQL(下面简称为PG)在整个数据库行业的位置之前,我们先看一下阿里云数据库在全球的数据库行业里的...

    未知1192023-05-07
  • PostgreSQLPostgresql开启远程访问的步骤全纪录

    Postgresql开启远程访问的步骤全纪录

    postgre一般默认为本地连接,不支持远程访问,所以如果要开启远程访问,需要更改安装文件的配置。下面这篇文章主要给大家介绍了关于Postgresql开启远程...

    我勒个去6812020-04-30