PostgreSQL聚合(分组、求和、最小值、最大值)能力练习

PostgreSQL聚合(分组、求和、最小值、最大值)能力练习,sql,database,postgresql,Sql,Database,Postgresql,我有一个很好的练习,以某种方式聚合表,这不是一个熟悉的练习,我尝试使用分组、求和、最大、最小函数,但我找不到一个逻辑来组合所有: 举例如下: db=# select * from test; id | t1 | t2 | a | b | c ----+----+----+---+---+---- 1 | 1 | 2 | x | y | 2 2 | 1 | 2 | y | x | 4 3 | 2 | 3 | x | y | 6 4 | 2 | 4 |

我有一个很好的练习,以某种方式聚合表,这不是一个熟悉的练习,我尝试使用分组、求和、最大、最小函数,但我找不到一个逻辑来组合所有: 举例如下:

db=# select * from test;

 id | t1 | t2 | a | b | c  
----+----+----+---+---+----
  1 |  1 |  2 | x | y |  2
  2 |  1 |  2 | y | x |  4
  3 |  2 |  3 | x | y |  6
  4 |  2 |  4 | y | x |  8
  5 |  3 |  4 | x | x | 10
  6 |  4 |  5 | x | x | 12
  7 |  4 |  7 | x | x | 14
本练习使用以下规则创建表test2:

选择具有相同参数a、b(即group列)的行 冗余值 将表相对于a、b分组后,输出列c 必须加以总结。 将表相对于a、b分组后,输出列t1 必须选择最小值。 将表相对于a、b分组后,输出列t2 必须选择最大值。 输出test2将从测试中选择,如下所示

db=# select * from test2;

 id | t1 | t2 | a | b | c  
----+----+----+---+---+----
  1 |  1 |  3 | x | y |  6
  2 |  1 |  4 | y | x |  12
  5 |  3 |  7 | x | x |  36
为便于参考,该表创建如下:

create table test (id BIGSERIAL PRIMARY KEY,t1 int4,t2 int4, a text, b text ,c INT64_UNSIGNED);

insert into test values (1,1,2,'x','y',2);
insert into test values (2,1,2,'y','x',4);
insert into test values (3,2,3,'x','y',6);
insert into test values (4,2,4,'y','x',8);
insert into test values (5,3,4,'x','x',10);
insert into test values (6,4,5,'x','x',12);
insert into test values (7,4,7,'x','x',140;
要在SQL server中创建表,请执行以下操作-

CREATE TABLE [dbo].[test](
    [id] [int] NULL,
    [t1] [int] NULL,
    [t2] [int] NULL,
    [a] [varchar](50) NULL,
    [b] [varchar](50) NULL,
    [c] [int] NULL
) ON [PRIMARY]
这是你的问题

胜任训练的解决方案

select MIN(id) as id,
       MIN(t1) as t1,
       Max(t2) as t2,
       a,
       b,
       sum(c) as c 
from dbo.test 
group by a,b order by id

id | t1 | t2 | a | b | c--+--+--+--1 | 1 | 3 | x | y | 8 2 | 1 | 4 | y | 12 5 | 3 | 7 | x | x | 36为什么要将Postgres放在标题中,用mysql标记问题,然后给出SQL Server特定的非标准DDL语句?这令人困惑。你真正使用的是哪种数据库管理系统?这个地方变得越来越懒…:所有那些为我做作业的线程突然出现。。。