如何在PostgreSQL中总结语句?

时间:2016-11-03 21:27:36

标签: sql postgresql group-by postgresql-9.3

为了获得最终结果,我需要编写大量查询:

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';
...

其中column2来自3-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 |

任何有用的帮助!

2 个答案:

答案 0 :(得分: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

我通常会为MS-SQL做T-SQL,但这是非常基本的,所以我希望这可以在Postgres上运行

答案 1 :(得分:1)

为什么要这样?您可以按列2进行分组。

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