2016-11-03 83 views
1

为了得到最后的结果我需要写的查询很多:如何总结PostgreSQL中的语句?

SELECT min(x) from table WHERE column1='ab' AND column2='3'; 
SELECT min(y) from table WHERE column1='ab' AND column2='3'; 
SELECT max(x) from table WHERE column1='ab' AND column2='3'; 
SELECT max(y) from table WHERE column1='ab' AND column2='3'; 
SELECT min(x) from table WHERE column1='ab' AND column2='4'; 
SELECT min(y) from table WHERE column1='ab' AND column2='4'; 
SELECT max(x) from table WHERE column1='ab' AND column2='4'; 
SELECT max(y) from table WHERE column1='ab' AND column2='4'; 
... 

其中column23-8去。

我想我可以CASE,不知何故,也许做一些FOR循环为column2,但我没有成功与它。或者我可以用它做别的事情?

通缉的结果:

column2 | minx | miny | maxx | maxy | 
     3 | number | number | number | number | 
     4 | number | number | number | number | 
     5 | number | number | number | number | 
     6 | number | number | number | number | 
     7 | number | number | number | number | 
     8 | number | number | number | number | 

任何帮助appriciated!

回答

2

不知道你会如何使用一个案例,但似乎是一个简单的使用组按声明。

SELECT Column2, Min(x), Min(y), Max(x), Max(y) 
FROM table 
WHERE Column1='ab' AND Column2 > 2 AND Column2 < 9 GROUP BY Column2 

我通常做的T-SQL的MS-SQL,但是这是非常基本的,所以我希望这将在Postgres的

+0

谢谢,我还在学习 –

1

的情况下,为什么工作?你可以按column2分组。

select 
    column2, 
    min(x) as minx, 
    min(y) as miny, 
    max(x) as maxx, 
    max(y) as maxy 
from table 
where column1 = 'ab' and column2 between 3 and 8 
group by 
    column2 
+0

谢谢,还在学习过程中! –