получение подсчета из нескольких таблиц на основе пола и набранных процентов - PullRequest
1 голос
/ 15 марта 2019

Мне нужно использовать 3 таблицы

1. tbl_school_info 
school_id   school_name
1           St. Joseph
2           White Cross

2. tbl_student_info
student_id      school_id       student_name    student_gender
1                   1           maria liejal        F
2                   1           eerika carthy       F
3                   1           heron               M
4                   2           Glenn hui           M
5                   2           joseph              M
6                   2           christii            F
7                   2           hina moggy          F

3. tbl_student_marks 
marks_id        school_id       student_id          scored_percentage
1                   1               1                       78
2                   1               2                       79
3                   1               3                       20
4                   2               4                       65
5                   2               5                       78
6                   2               6                       84
7                   2               7                       83

Мне нужен результат: количество мальчиков, девочек и общее количество учеников в каждой школе, количество пройденных учащихся мужского и женского пола и наибольшее количество учеников мужского пола.Результат будет таким:

school_name || male_stud_cnt || female_stud_cnt || passed_male_cnt || passed_female_cnt || top_percentage_male ||top_percentage_female
St. Joseph          1               2                   0                   2                       20                  79
White Cross         2               2                   2                   2                       78                  84

Учащиеся, чей балл ниже 35%, не сдали экзамен.Как я могу написать запрос, чтобы получить этот результат?Можно ли получить такой результат, используя SQL-запрос в MS SQL Server?Я не могу получить счет, как я могу написать такой запрос?

1 Ответ

1 голос
/ 15 марта 2019

Вы можете попробовать использовать условное агрегирование со случаем, когда выражение

with cte as
(
select school_name,a.student_id,student_gender,scored_percentage from
tbl_student_marks a inner join tbl_student_info b
on a.student_id=b.student_id
inner join tbl_school_info c on a.school_id=b.school_id
)
select school_name, 
       count(case when student_gender='M' then student_id end) as male_stud_cnt,
       count(case when student_gender='F' then student_id end) as female_stud_cnt,
       count(case when student_gender='M' and scored_percentage>35 then student_id end) as passed_male_cnt,
       count(case when student_gender='F' and scored_percentage>35 then student_id end) as passed_female_cnt,
       max(case when student_gender='M' then scored_percentage end) as top_percentage_male,
       max(case when student_gender='F' then scored_percentage end) as top_percentage_female
from cte 
group by school_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...