查找两个日期中的最小值 - PSQL

Finding the minimum of two dates - PSQL

PSQL 新手..我有一个 table 有一个主键和两个时间戳

ID  Start_date  end_date
100 9/4/14 14:53    9/4/14 14:56
100 4/24/13 12:49   4/24/13 14:08
100 9/25/15 11:06   9/25/15 11:14
101 2/7/15 12:05    2/7/15 12:09
101 2/4/13 17:18    Null
102 12/6/12 13:22   NULL
102 12/6/12 13:28   NULL
102 12/6/12 13:36   12/12/12 8:38

我希望输出是每个 ID 的最小日期

ID  Start_date  end_date
100 4/24/13 12:49   4/24/13 14:08
101 2/4/13 17:18    Null
102 12/6/12 13:22   NULL

我有以下查询:

SELECT distinct ID,
       min(end_date) ,       
       min(Start_date) 
from x 
group by ID.

那拉错了对应的值。我该怎么做?

使用ROW_NUMBER:

SELECT
    ID,
    Start_date,
    end_date
FROM (
    SELECT *, ROW_NUMBER() OVER(PARTITION BY ID ORDER BY Start_date) AS rn FROM x
) AS t
WHERE rn = 1;