Postgres插入具有最大最小值的所有行

时间:2015-11-02 15:11:33

标签: postgresql

我想从一个表中选择所有行,然后将它们插入到另一个表中,只有所有行的最大值和最小值。无法在没有group by子句的情况下弄清楚如何写这个。它是一个大表(更新set =?from(select max ...))是慢速

table1:

id,values  
1,2  
2,4  
3,1  

表2:

id,max,min  
1,4,1  
2,4,1  
3,4,1  

2 个答案:

答案 0 :(得分:1)

这是另一个尝试使用窗口函数(SQLFiddle:http://sqlfiddle.com/#!15/2978e) 这是获取数据的选择。

select 
  id, 
  min(values) over () as min, 
  max(values) over () as max 
from Table1

插入这些值,必须执行此sql

insert into table2 (id, min, max)
select 
  id, 
  min(values) over () as min, 
  max(values) over () as max 
from Table1

或从 创建 table2

create table table2 as
select 
  id, 
  min(values) over () as min, 
  max(values) over () as max 
from Table1

答案 1 :(得分:0)

这样做:

SELECT n1.id,
       n2.mymax,
       n2.mymin
FROM
  (SELECT MIN(values) AS mymin,
          MAX(values) AS mymax
   FROM dbTable) n2,
     dbTable n1;

SQL小提琴here