如何编写SQL查询?

时间:2016-06-21 01:55:43

标签: sql postgresql postgresql-9.4

假设我有下表,如何编写SQL查询以查找一组结果,这些结果是每个b的最小c?例如,我想要(7,45)和(16,69)用于下表。

  a |      b | c 
-----+--------+----
  3 |      7 | 53
  2 |      7 | 49
  1 |      7 | 45
  5 |      7 | 61
 13 |     16 | 69
 15 |     16 | 77
  6 |      7 | 65
  4 |      7 | 57
 14 |     16 | 73

2 个答案:

答案 0 :(得分:3)

只需使用GROUP BY

SELECT b, MIN(c)
FROM yourTable
GROUP BY b

答案 1 :(得分:1)

您可以使用Postgres中的distinct on执行此操作:

select distinct on (b) b, c
from t
order by b, c asc;

另一种选择是group by

select b, min(c)
from t
group by b;

你可以试试两者,看看哪个更快。