我如何根据所有学历中最低的学历找到学生的详细信息

时间:2019-03-28 06:27:49

标签: sql postgresql aggregate-functions

我有2张桌子,如下所述是学生和学历。我必须根据必填字段找到所有学生的详细信息,并且记录的顺序应基于他的分数,年龄,最高学历,最低学历和最低学历的百分比。

我尝试了各种查询,其中包括了所有必填字段。但是假设一个学生有3个学历,则记录会被乘以多次。 例如:

Sr.No  Student_ID Highest Qualification Marks
1      001         Grad     SSC        80 
2      001         Grad     HSC        60 
3      001         Grad     Grad       80 
4      002         HSC      SSC        60 
5      002         HSC      HSC        50 
6      003         SSC      SSC        40 

这是我尝试过的查询

SELECT std.stud_id, std.dob, std.highest_qual, MIN(std.lowest_qual) , std.marks
FROM student std
LEFT JOIN qualifications qual ON std.stud_id = qual.stud_id 
Where std.fees_paid ='Y'
ORDER BY std.marks, std.dob, std.highest_qual

预期结果:

001 23-04-1991 Grad SSC 80
002 20-09-1992 HSC  SSC 60
003 13-05-1992 SSC  SSC 40

查询结果:查询返回所有记录,而不是每个学生的单个记录

001 23-04-1991 Grad SSC 80
001 23-04-1991 Grad HSC 60
001 23-04-1991 Grad GRAD 80
002 20-09-1992 HSC  SSC 60
002 20-09-1992 HSC  HSC 60
003 13-05-1992 SSC  SSC 40

2 个答案:

答案 0 :(得分:0)

我相信您的qualifications表中有一些指标可以建议给定资格的​​排名(例如qual_rank)。如果是这样,您可以这样做

select * from
( select s.*, row_number() OVER ( partition by student_id 
       order by q.qual_rank ) as rn
   from student s join qualifications qual ON std.stud_id = qual.stud_id 
) sq where rn = 1;       

如果没有,则必须定义层次结构

select * from
( select s.*, row_number() OVER ( partition by student_id order by 
                                            CASE qualification WHEN  'SSC'  THEN 1 
                                                               WHEN  'HSC' THEN 2
                                                               WHEN  'Grad' THEN 3
                                                        END 
                                                  ) as rn
from student s) sq where rn = 1; 

DEMO

答案 1 :(得分:0)

我认为表结构是这样的,我已经提到了该结构的查询。

            <ion-content padding>
             <ion-content padding>
                <input ngui-auto-complete
                   [(ngModel)]="model1"
                   [source]="Mountains"
                   [open-on-focus]="false"
                   display-property-name = "MountainName"
                   [list-formatter] = "autocompleteListFormatter"
                   placeholder="Enter the name of the mountain"
                   max-num-list = "5"
                   min-chars ="2"/>

           <h2> {{ model1?.height }} </h2>
           <h4><i><strong>{{ model1?.desc}}</strong></i></h4>
          </ion-content>
         </ion-content>

您可能需要根据所需的数据和输出将INNER JOINS更改为LEFT JOINS。