Php 从主数据库中查找学生的最低资格

Php 从主数据库中查找学生的最低资格,php,postgresql,Php,Postgresql,我有一个学生数据库,每个学生都有基于其所有资格的多个记录。 我想分别找出每个学生的最低资格 我尝试了一个SQL查询,根据限定条件进行分组,但结果是所有记录 select student_id,qualification from student group by qualification order by qualification ASC 例如:原始表格 1 SSC 50 1 HSC 60 2 SSC 80 2 HSC 60 2 Grad 50 3 HSC 70 4 SSC 70 4 Di

我有一个学生数据库,每个学生都有基于其所有资格的多个记录。
我想分别找出每个学生的最低资格

我尝试了一个SQL查询,根据限定条件进行分组,但结果是所有记录

select student_id,qualification
from student
group by qualification
order by qualification ASC
例如:原始表格

1 SSC 50
1 HSC 60
2 SSC 80
2 HSC 60
2 Grad 50
3 HSC 70
4 SSC 70
4 Diploma 70
预期结果

1 SSC 50
2 SSC 80
3 HSC 70
4 SSC 70

如果将数据分为资格字段和分数字段,则只需使用
MIN()
。您必须在select中的所有字段上按分组,这样我们就可以使用
MIN()
找到最低资格,然后将该结果加入到中以获得其他相关列,如
资格

我想,
Diplomia
不是有效的资格

create table students (
  student_id int,
  qualification varchar(128),
  score int
);

insert into students (student_id, qualification, score)
values
(1, 'SSC', 50),
(1, 'HSC', 60),
(2, 'SSC', 80),
(2, 'HSC', 60),
(2, 'Grad', 50),
(3, 'HSC', 70),
(4, 'SSC', 70),
(4, 'Diploma', 70);
然后是一个简单的查询,使用
MIN()
——请记住,在使用聚合函数时,如
MIN()
,您必须始终使用
groupby


参见此图。

如果您可以将
限定条件
拆分为
限定条件
,那么它就变得更简单了。您可以详细说明一下吗?能否显示您的db结构将限定条件转换为数字
SSC 50
将是
1050
HSC 50
将是
1250
同样
HSC 60
将是
1260
。对于
文凭50
1350
文凭70
1370
ASC
无法识别HSC是高等教育,
SSC
是中等教育。资格证书是一个包含科目代码和资格证书的varchar?我是否有办法同时获得最低资格证书的分数?因为我尝试将字段添加到查询中,但它给了我多条记录。您可能可以分离逻辑,因为分数是根据分数计算的。请记住,您需要对所有选定字段进行分组,以获得正确的结果。
SELECT * 
FROM students 
JOIN (
  SELECT student_id, MIN(score) as score
  FROM students
  GROUP BY student_id
) min_score USING (student_id, score)
WHERE qualification <> 'Diploma'
student_id  score   qualification
1           50      SSC
2           50      Grad
3           70      HSC
4           70      SSC