检索由聚合函数选择其行的另一个字段

时间:2013-07-09 05:50:57

标签: postgresql

SELECT a.first_field, min(a.second_field), X 
FROM a
GROUP BY (a.first_field)

我希望 X min(a.second_field)选择的行 a.third_field 我该怎么做?

详细说明:

min(a.second_field) a.first_field 分组的值(来自行)中检索一个最小值。 检索到的值必须来自一行吗?我希望查询还从 min function 选择的返回另一个字段值。不仅是 min函数处理的字段的最小值。

3 个答案:

答案 0 :(得分:2)

您应该使用ROW_NUMBER()

select first_field,second_field,third_field
from
(
SELECT a.*,
       ROW_NUMBER() 
         OVER (PARTITION BY a.first_field  
               ORDER BY second_field) 
        as rn
FROM a
) b where b.rn=1;

SQLFiddle demo

答案 1 :(得分:0)

我想,你想从最小值为 second_field 的行中找到 third_value 。然后使用:

SELECT a.first_field, a.second_field, a.third_field
FROM a
WHERE a.third_field = MIN(a.third_field)
GROUP BY a.first_field

答案 2 :(得分:0)

尝试:

SELECT b.*, min(a.third_field) FROM (
SELECT a.first_field, min(a.second_field) 
FROM a
GROUP BY (a.first_field) ) as b
INNER JOIN a

格式不正确,但它应该可以正常工作