如何获得每个外键的最小值

Vla*_*nov 4 sql database postgresql

鉴于下表:

student   discipline   mark
-------   ----------   ----
   1         math       5 
   1      phylosophy    4
   1      literature    3
   2         math       2
   2      phylosophy    5
   2      literature    5
Run Code Online (Sandbox Code Playgroud)

为每个学生获得最小分数的最佳方法是什么?(结果应为[3,2])

Gav*_*ell 7

使用该MIN功能.

SELECT student, MIN(mark)
FROM result_table
GROUP BY student
Run Code Online (Sandbox Code Playgroud)

如果你需要纪律,他们得到最低分,你可以做到以下几点:

SELECT result_table.*
FROM result_table 
JOIN (SELECT student, MIN(mark) as min_mark
  FROM result_table
  GROUP BY student) lowest_result ON result_table.student = lowest_result.student 
AND result_table.mark = lowest_result.min_mark
Run Code Online (Sandbox Code Playgroud)

这将显示学生得分最低的结果.请注意,如果学生在多个科目中具有相同的最低分,则会为学生返回两行.为避免这种情况,您可以MIN在学科和GROUP BY学生周围添加另一个并标记.