Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL Учебник.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.28 Mб
Скачать

Примеры:

I. Выполнить ряд запросов к БД, составленной с нарушением правил нормализации.

Фамилия

Группа

История

Информ

МатАн

БАЖАНОВА

1

5

2

4

КОВАЛЕНКО

1

4

2

2

ЛАПИНА

5

2

5

4

СМОЛИК

1

5

5

5

ГОРБУНОВА

2

4

4

5

Запрос 1. Определить фамилии отличников.

SELECT Фамилия

FROM Студенты

WHERE История=5 AND Информ=5 AND МатАн=5

WHERE (История+ Информ+ МатАн)/3=5

Фамилия

СМОЛИК

Запрос 2. Определить фамилии студентов, успешно сдавших экзамен.

SELECT Фамилия

FROM Студенты

WHERE История >2 AND Информ >2 AND МатАн >2

Фамилия

СМОЛИК

ГОРБУНОВА

SELECT Фамилия

FROM Студенты

WHERE История =2 OR Информ =2 OR МатАн =2

Запрос 3. Определить фамилии студентов, получивших хотя бы одну двойку.

Фамилия бажанова коваленко лапина

Запрос 4. Определить средний балл каждого студента.

SELECT Фамилия, (История + Информ + МатАн)/3

FROM Студенты

Фамилия

Балл

БАЖАНОВА

3,9

КОВАЛЕНКО

2,9

ЛАПИНА

3,9

СМОЛИК

5.0

ГОРБУНОВА

4,2

II. Выполнить ряд запросов к БД, составленной по правилам нормализации.

Фамилия

Группа

История

Информ

МатАн

БАЖАНОВА

1

5

2

4

КОВАЛЕНКО

1

4

2

2

ЛАПИНА

5

2

5

4

СМОЛИК

1

5

5

5

ГОРБУНОВА

2

4

4

5

Студенты Ведомость Дисциплины

П_Ключ_С

Фамилия

Группа

1

БАЖАНОВА

1

2

КОВАЛЕНКО

1

3

ЛАПИНА

5

4

СМОЛИК

1

5

ГОРБУНОВА

2

П_Ключ_П

Предмет

1

История

2

Информатика

3

Эконометрика

В_Ключ_С

В_Ключ_П

Оценка

1

1

5

1

2

2

1

3

4

2

1

4

2

2

2

2

3

2

3

1

4

3

2

5

3

3

4

4

1

5

4

2

5

4

3

5

5

1

4

5

2

4

5

3

5

Запрос 1. Определить фамилии отличников.

SELECT Фамилия

FROM Студенты INNER JOIN Ведомость ON Студенты.П_Ключ_С=Ведомость.В_Ключ_С

WHERE Оценка=5

GROUP BY Фамилия

HAVING COUNT (Фамилия) =3

Фамилия

СМОЛИК

SELECT Фамилия

FROM Студенты

WHERE История=5 AND Информ=5 AND МатАн=5

SELECT Фамилия

FROM Студенты INNER JOIN Ведомость ON Студенты.П_Ключ_С=Ведомость.В_Ключ_С

WHERE Оценка=5

GROUP BY Фамилия

HAVING COUNT (Фамилия) =( SELECT COUNT (Предмет) FROM Дисциплины)

ВЕРНО

Запрос 2. Определить фамилии студентов, успешно сдавших экзамен.

SELECT Фамилия

FROM Студенты INNER JOIN Ведомость ON Студенты.П_Ключ_С=Ведомость.В_Ключ_С

WHERE Оценка >2

GROUP BY Фамилия

HAVING COUNT (Фамилия) =( SELECT COUNT (Предмет) FROM Дисциплины)

Фамилия

СМОЛИК

ГОРБУНОВА

ЛАПИНА

SELECT Фамилия

FROM Студенты

WHERE История >2 AND Информ >2 AND МатАн >2

Запрос 3. Определить фамилии студентов, получивших хотя бы одну двойку.

SELECT Фамилия

FROM Студенты INNER JOIN Ведомость ON Студенты.П_Ключ_С=Ведомость.В_Ключ_С

WHERE Оценка =2

GROUP BY Фамилия

HAVING COUNT (Фамилия) >=1

SELECT Фамилия

FROM Студенты

WHERE История =2 OR Информ =2 OR МатАн =2

Фамилия

БАЖАНОВА

КОВАЛЕНКО

Запрос 4. Определить средний балл каждого студента.

SELECT Фамилия, AVG(Оценка)

FROM Студенты INNER JOIN Ведомость ON Студенты.П_Ключ_С=Ведомость.В_Ключ_С

GROUP BY Фамилия

Фамилия

Балл

БАЖАНОВА

3,7

КОВАЛЕНКО

2,7

ЛАПИНА

4,3

СМОЛИК

5.0

ГОРБУНОВА

4,3

SELECT Фамилия, (История + Информ + МатАн)/3

FROM Студенты

Если студент сдавал не все экзамены то:

SELECT Фамилия, SUM(Оценка)/ ( SELECT COUNT (Предмет) FROM Дисциплины)

FROM Студенты INNER JOIN Ведомость ON Студенты.П_Ключ_С=Ведомость.В_Ключ_С

GROUP BY Фамилия

ПРИМЕЧАНИЕ:

Для исключения попадания в одну группу однофамильцев, предложение

GROUP BY Фамилия

следует писать как

GROUP BY Фамилия, П_Ключ_С

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]