Слайд 2
Отбор данных
1 Выбор данных из нескольких таблиц
Универсальное отношение
Слайд 3
Отбор данных
1 Выбор данных из нескольких таблиц
Хранение данных
в СУБД
Слайд 4
Отбор данных
1 Выбор данных из нескольких таблиц
Таблицы:
- firm
id_f
– идентификатор организации
name – наименование организации
- worker
id_f – идентификатор
организации
id_w – идентификатор сотрудника
name – ФИО
sex – пол
bdate – дата рождения
id_f – простой ключ
id_f , id_w – составной ключ
Слайд 5
Отбор данных
1 Выбор данных из нескольких таблиц
SELECT
firm.name, worker.name, worker.sex, worker.bdate
FROM
firm, worker
WHERE
firm.id_f =
worker.id_f
Выбор данных из двух таблиц: вывести в одну строку Наименование организации, ФИО, Пол, Дату рождения, где идентификатор организации id_f таблицы firm равен идентификатору организации id_f таблицы Worker
Слайд 6
Отбор данных
1 Выбор данных из нескольких таблиц
SELECT
a.name,
b.name, b.sex, b.bdate
FROM
firm a, worker b
WHERE
a.id_f=b.id_f
Удобнее
использовать псевдонимы таблиц
a – псевдоним таблицы firm
b – псевдоним таблицы worker
Слайд 7
Отбор данных
1 Выбор данных из нескольких таблиц
SELECT
a.name,
b.name, b.sex, b.bdate
FROM
firm a, worker b
WHERE
a.id_f=b.id_f and
b.sex=‘ж’
Выведем сотрудников женского пола с указанием наименования организации, ФИО, пола и даты рождения
Слайд 8
Отбор данных
1 Выбор данных из нескольких таблиц
SELECT
a.name,
b.name, b.sex, b.bdate
FROM
firm a, worker b
WHERE
a.id_f=b.id_f
ORDER BY
b.name
Выведем всех людей, отсортировав по ФИО
Слайд 9
Отбор данных
1 Выбор данных из нескольких таблиц
SELECT
a.name,
b.name, b.sex, b.bdate
FROM
firm a, worker b
WHERE
a.id_f=b.id_f
ORDER BY
a.name, b.name
Выведем всех людей, отсортировав по наименованию организации и ФИО
Слайд 10
Отбор данных
Выбор данных из нескольких таблиц
Группировка данных
Отбор по
сгруппированным данным
База данных «Касса»
Слайд 11
Отбор данных
2 Группировка данных
Группировка – объединение данных по
заданному критерию для выделения требуемой информации из данных при
помощи агрегатных функций
Некоторые агрегатные функции:
count
max
min
avg
sum
Слайд 12
Отбор данных
2 Группировка данных
группировка по «поле 1»
группировка по
«поле 1», «поле 3»
Слайд 13
Отбор данных
2 Группировка данных
SELECT
surname, count(*)'Кол-во'
FROM
people
group by surname
Сгруппировать людей по фамилиям, выяснить сколько
людей проживают с одинаковыми фамилиями
Слайд 14
Отбор данных
Выбор данных из нескольких таблиц
Группировка данных
Отбор по
сгруппированным данным
База данных «Касса»
Слайд 15
Отбор данных
3 Отбор по сгруппированным данным
HAVING определяет условие
поиска для группы, обычно используется в предложении GROUP BY.
Когда GROUP BY не используется, предложение HAVING работает так же, как и предложение WHERE.
Слайд 16
Отбор данных
3 Отбор по сгруппированным данным
SELECT
surname, count(*) 'Кол-во'
FROM
people
group by
surname
HAVING
count(*)>4000
ORDER BY
count(*) desc
Вывести только те фамилии, под которыми проживают больше 4000 человек (отсортировать по убыванию кол-ва)
Слайд 17
Отбор данных
3 Отбор по сгруппированным данным
SELECT
surname, count(*) 'Кол-во',
min(birthday)'др'
FROM
people
group
by
surname
HAVING
count(*)>4000
Вывести только те фамилии, под которыми проживают больше 4000 человек, а так же вывести дату рождения самого старого
Слайд 18
Отбор данных
Выбор данных из нескольких таблиц
Группировка данных
Отбор по
сгруппированным данным
База данных «Касса»
Слайд 19
Отбор данных
4 База данных «Касса»
type_commodity – тип товара
(id – идентификатор типа товара; name – наименование типа
товара)
commodity – перечень товаров (id – идентификатор товара; id_type – тип товара; name – наименование товара; price – цена за единицу товара)
сash – кассовые чек(day – дата чека; id – номер чека; id_comm – идентификатор товара; count – кол-во товара)
Слайд 20
Отбор данных
4 База данных «Касса»
type_commodity
commodity
Слайд 21
Отбор данных
4 База данных «Касса»
cash
Слайд 22
Отбор данных
4 База данных «Касса»
Запросим данные о продаже
каждой единицы товара по каждому чеку с указанием всех
известных данных (дата продажи, номер чека, тип товара, наименование товара, цена, кол-во)
Слайд 23
Отбор данных
4 База данных «Касса»
SELECT
a.day, a.id, c.name,
b.name, b.price, a.count
FROM
cash a,
commodity b,
type_commodity c
Where
a.id_comm
= b.id and c.id=b.id_type
Слайд 24
Отбор данных
4 База данных «Касса»
SELECT
count(*)
FROM
cash
Сколько всего
позиций было продано за все дни?
Ответ: 25
Слайд 25
Отбор данных
4 База данных «Касса»
SELECT
day, count(*)
FROM
cash
group
by
day
Сколько всего позиций было продано в рамках каждого
дня?
Слайд 26
Отбор данных
4 База данных «Касса»
Рассчитать итоговую сумму по
каждому чеку?
1) Рассчитаем расходы по каждой позиции
SELECT
a.day, a.id,
b.name, b.price, a.count, b.price*a.count
FROM
cash a, commodity b
where
a.id_comm = b.id
Слайд 27
Отбор данных
4 База данных «Касса»
2) Сгруппируем данные и
применим функцию sum
SELECT
a.day, a.id, sum(b.price*a.count) ‘Итого’
FROM
cash a,
commodity b
where
a.id_comm = b.id
group by
a.day, a.id
Слайд 28
Отбор данных
4 База данных «Касса»
Какой самый популярный товар?
Отсортировать по популярности по убыванию
SELECT
b.name, count(*)
FROM
cash a,
commodity b
where
a.id_comm = b.id
group by b.name
order by count(*) desc
Слайд 29
Отбор данных
4 База данных «Касса»
Вывести только те товары,
популярность которых больше 2. Отсортировать по популярности по убыванию
SELECT
b.name, count(*)
FROM
cash a, commodity b
where
a.id_comm = b.id
group by
b.name
having
count(*) >=2
order by
count(*) desc
Слайд 30
Отбор данных
4 База данных «Касса»
Вывести самый популярный тип
товара, отсортировать по популярности по убыванию
SELECT
c.name, count(*)
FROM
cash
a,
commodity b,
type_commodity c
where
a.id_comm = b.id and c.id=b.id_type
group by
c.name
order by
count(*) desc