PostgreSQL的。在记录中查找最大日期范围

时间:2015-08-10 08:26:25

标签: sql postgresql

我有这个记录:

id | user_id |    date   
 1 |    1    | 2015-01-01
 2 |    1    | 2015-01-05
 3 |    2    | 2014-01-01
 4 |    2    | 2014-01-30
 5 |    3    | 2014-01-25
 6 |    3    | 2014-02-28

我想为每个用户选择日期范围,按日期范围长度排序。

所以,在结果中我想得到这个:

 user_id |  min_date   |  max_date
    2    |  2014-01-01 | 2014-01-30
    3    |  2014-01-25 | 2014-02-28
    1    |  2015-01-01 | 2015-01-05

是否可以使用sql查询?

http://sqlfiddle.com/#!15/f958b

2 个答案:

答案 0 :(得分:2)

我必须遗漏一些令人沮丧的事情,这不仅仅是一个简单的小组吗?

   SELECT user_id, 
          min(date), 
          max(date) 
     FROM test_table
 GROUP BY user_id 
 ORDER BY max(date) - min(date) DESC, 
          user_id;

答案 1 :(得分:1)

SELECT * FROM
(
SELECT user_id, MIN(date) AS min_date, 
MAX(date) AS max_date FROM test_table 
GROUP BY user_id
) t
ORDER BY max_date- min_date DESC