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