Ответ на задание 1
Для выбора студентов из нескольких групп можно использовать
оператор IN:
SELECT FullName, Email, GroupID
FROM Student
WHERE GroupID IN (2, 3)
ORDER BY FullName ASC;
Условие:
WHERE GroupID IN (2, 3)
означает, что будут выбраны студенты, у которых GroupID
равен 2 или 3.
ORDER BY FullName ASC сортирует результат по ФИО в
алфавитном порядке. ASC означает сортировку по возрастанию.
Альтернативно условие можно записать через OR:
WHERE GroupID = 2 OR GroupID = 3
Ответ на задание 2
Для выполнения вычислений над набором строк используются
агрегатные функции.
1. Количество дисциплин:
SELECT COUNT(*) AS CourseCount
FROM Course;
COUNT(*) подсчитывает количество строк в таблице.
2. Среднее количество кредитов:
SELECT AVG(Credits) AS AverageCredits
FROM Course;
Функция AVG() вычисляет среднее значение указанного
числового столбца.
3. Минимальное и максимальное количество кредитов:
SELECT
MIN(Credits) AS
MinimumCredits,
MAX(Credits) AS
MaximumCredits
FROM Course;
MIN() определяет минимальное значение, а MAX() —
максимальное.
Все показатели также можно получить одним запросом:
SELECT
COUNT(*) AS
CourseCount,
AVG(Credits) AS
AverageCredits,
MIN(Credits) AS
MinimumCredits,
MAX(Credits) AS
MaximumCredits
FROM Course;
Ответ на задание 3
Для объединения строк по значению GroupID используется GROUP
BY:
SELECT
GroupID,
COUNT(*) AS
StudentCount
FROM Student
GROUP BY GroupID
HAVING COUNT(*) >= 5
ORDER BY StudentCount DESC;
GROUP BY GroupID объединяет студентов с одинаковым
идентификатором группы.
Для каждой полученной группы выполняется:
COUNT(*)
и определяется количество студентов.
Условие:
HAVING COUNT(*) >= 5
оставляет только группы, содержащие пять и более студентов.
HAVING применяется для фильтрации результатов после
группировки, тогда как WHERE обычно фильтрует отдельные строки до
выполнения GROUP BY.
Команда:
ORDER BY StudentCount DESC;
сортирует результат от группы с наибольшим количеством
студентов к группе с наименьшим.