我有一个带有两列的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
任何帮助都会受到赞赏并提前感谢。
答案 0 :(得分:2)
可以使用MIN
aggregate function完成此操作,然后按<projectroot>/build/test-results/...
列进行分组:
Routes
SELECT Routes, MIN(Times) FROM Table GROUP BY Routes
子句用于将行组合在一起成为一行,它们对GROUP BY
子句中指定的字段具有相同的值。然后,您可以使用汇总函数,例如GROUP BY
,MIN
,MAX
,SUM
,...来计算已组合在一起的行中的值。
答案 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
将返回表达式相等的每组行的“ first ”行。
根据文件。
DISTINCT ON(表达式[,...])仅保留每个的第一行 给定表达式求值等于的行集。 [...] 注意 除非ORDER BY是,否则每组的“第一行”是不可预测的 用于确保首先出现所需的行。 [...] DISTINCT ON表达式必须与最左边的ORDER BY表达式匹配。