Как можно сделать выборку из базы данных MS SQL?

Здравствуйте!
Имеется схема базы данных должников по предметам в университете.
5ac2884214018023639922.png

Меня интересует следующая выборка:

Для каждой группы выбрать общее количество должников и количество должников, у которых количество долгов больше двух

Основные таблицы, которые участвуют в запросе:
  • Students(StudentId(PK), GroupNumber, RecordBookNumber(номер зачетки), FirstName, LastName, MiddleName)
  • Subjects(SubjectId(PK), Name)
  • StudentsSubjects(StudentsSubjectsId(PK), SubjectId(FK), TeacherId(FK), MarkId(FK), ControlTypeId(FK), ControlPeriod(FK), CuratorID(FK))

Вывести некоторые данные по отдельности у меня получается.
Количество долгов в группе
select Students.GroupNumber as groupNum, Count(StudentsSubjects.StId) as Kol_dolgov
from StudentsSubjects, Students
where Students.RecordBookNumber = StudentsSubjects.StId
group by Students.GroupNumber
order by groupNum

Количество должников, у которых количество долгов более двух
select t1.Grp, count(t1.Rbn) as Kol_dol_bol2
from
(select Students.GroupNumber as Grp, Students.RecordBookNumber as Rbn, count(StudentsSubjects.SubjId) as Kol_dolg
from Students,StudentsSubjects, Subjects</li>
where Students.RecordBookNumber = StudentsSubjects.StId and Subjects.SubjectId = StudentsSubjects.SubjId
group by Students.RecordBookNumber, Students.GroupNumber
having count(StudentsSubjects.SubjId) > 2) as t1
group by t1.Grp

Количество должников в группе
select Students.GroupNumber as Grp, count(Students.RecordBookNumber) as Kol_dolgnikov
from Students
group by Students.GroupNumber
order by 1


Но не могу никак объединить всё это в одну таблицу. Могли бы Вы подсказать, как это сделать и возможно ли вообще, учитывая данную схему БД.
  • Вопрос задан
  • 297 просмотров
Решения вопроса 1
@lrv
С телефона лень писать. Не лучшее решение, но засуньте два запроса в подзапро и заджойните по общему полю.
select *
from (запрос 1) as запрос1
left outer join (запрос 2) as запрос2 on запрос1.группа = запрос2.группа. Есть вариант и поизящнее.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@klim76
android/java/sql
Но не могу никак объединить всё это в одну таблицу.

для таких случаев был придуман оператор JOIN в различных интерпретациях.
wiki
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы