我想从一个表中选择所有行,然后将它们插入到另一个表中,只有所有行的最大值和最小值。无法在没有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
答案 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: