如何编写 SQL 查询?

How to write the SQL query?

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

  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

您可以使用 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;

你可以试试看哪个更快。

只需使用GROUP BY:

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