
- •Занятие 3 Инструкция select Простая выборка
- •Выборка с условием (фильтрация)
- •Фильтрация по одному полю
- •Расширенные условия отбора
- •Сортировка
- •Вычисляемые поля
- •Математические операции между столбцами.
- •Функция round
- •Текстовые операции. Сцепление столбцов. Функции len, left
- •Функции Даты
- •Условный оператор iif
- •Занятие 7 Статистические функции в sql
- •Группировка данных
- •Группировка по одному столбцу
- •Группировка по нескольким столбцам
- •Фильтрация групп
- •Сортировка групп
- •Примеры:
- •Фамилия бажанова коваленко лапина
- •Занятие 8 Подзапросы
- •Использование подзапросов возвращающих одно значение
- •Использование подзапросов возвращающих несколько значений
- •Примеры с подзапросами
- •Соединение таблиц
- •Инструкции на изменение данных Инструкция: delete
- •Инструкция update
- •Инструкция: insert into
- •Insert into ИмяТаблицы
- •Комбинированные запросы
Примеры:
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 Фамилия, П_Ключ_С