POSTGRES最小值/最小值

时间:2016-01-12 01:23:25

标签: sql postgresql aggregate-functions postgresql-9.3 distinct-on

我有一个带有两列的postgres 9.3表。第一列有时间,第二列有路径。路线可能有多次。我想列出最少次数的所有路线。我的表:

Times      Routes
07:15:00    Route a
09:15:00    Route a
08:15:00    Route b
11:30:00    Route b
09:15:00    Route c
12:00:00    Route c

我想要的输出:

 Times        Routes
 07:15:00     Route a
 08:15:00     Route b
 09:15:00     Route c 

任何帮助都会受到赞赏并提前感谢。

3 个答案:

答案 0 :(得分:2)

可以使用MIN aggregate function完成此操作,然后按<projectroot>/build/test-results/...列进行分组:

Routes

SELECT Routes, MIN(Times) FROM Table GROUP BY Routes 子句用于将行组合在一起成为一行,它们对GROUP BY子句中指定的字段具有相同的值。然后,您可以使用汇总函数,例如GROUP BYMINMAXSUM,...来计算已组合在一起的行中的值。

答案 1 :(得分:1)

GROUP BY子句与聚合函数一起使用时非常有用。对于您的问题,要查找路径的所有输入值的最小时间值,您可以使用GROUP BY子句分组,对于每个组,您将使用MIN聚合函数计算时间。

您可以使用group by来实现此目的 select routes, min(times) from your_table group by routes

答案 2 :(得分:1)

select distinct on(routes) routes
      ,times 
from p 
order by routes,times asc 

DISTINCT ON

将返回表达式相等的每组行的“ first ”行。

根据文件。

  

DISTINCT ON(表达式[,...])仅保留每个的第一行   给定表达式求值等于的行集。 [...] 注意   除非ORDER BY是,否则每组的“第一行”是不可预测的   用于确保首先出现所需的行。 [...] DISTINCT   ON表达式必须与最左边的ORDER BY表达式匹配。