Отбор данных

Содержание

Слайд 2

Отбор данных

1 Выбор данных из нескольких таблиц

Универсальное отношение

Отбор данных 1 Выбор данных из нескольких таблиц Универсальное отношение

Слайд 3

Отбор данных

1 Выбор данных из нескольких таблиц

Хранение данных в СУБД

Отбор данных 1 Выбор данных из нескольких таблиц Хранение данных в СУБД

Слайд 4

Отбор данных

1 Выбор данных из нескольких таблиц

Таблицы:

- firm
id_f – идентификатор организации
name –

Отбор данных 1 Выбор данных из нескольких таблиц Таблицы: - firm id_f
наименование организации

- 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

Отбор данных 1 Выбор данных из нескольких таблиц SELECT firm.name, worker.name, worker.sex,

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

Отбор данных 1 Выбор данных из нескольких таблиц SELECT a.name, b.name, b.sex,
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

Отбор данных 1 Выбор данных из нескольких таблиц SELECT a.name, b.name, b.sex,
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

Отбор данных 1 Выбор данных из нескольких таблиц SELECT a.name, b.name, b.sex,
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

Отбор данных 1 Выбор данных из нескольких таблиц SELECT a.name, b.name, b.sex,
a, worker b
WHERE
a.id_f=b.id_f
ORDER BY
a.name, b.name

Выведем всех людей, отсортировав по наименованию организации и ФИО

Слайд 10

Отбор данных

Выбор данных из нескольких таблиц
Группировка данных
Отбор по сгруппированным данным
База данных «Касса»

Отбор данных Выбор данных из нескольких таблиц Группировка данных Отбор по сгруппированным данным База данных «Касса»

Слайд 11

Отбор данных

2 Группировка данных

Группировка – объединение данных по заданному критерию для выделения

Отбор данных 2 Группировка данных Группировка – объединение данных по заданному критерию
требуемой информации из данных при помощи агрегатных функций

Некоторые агрегатные функции:
count
max
min
avg
sum

Слайд 12

Отбор данных

2 Группировка данных

группировка по «поле 1»

группировка по «поле 1», «поле 3»

Отбор данных 2 Группировка данных группировка по «поле 1» группировка по «поле 1», «поле 3»

Слайд 13

Отбор данных

2 Группировка данных

SELECT
surname, count(*)'Кол-во'
FROM
people
group by surname

Сгруппировать людей

Отбор данных 2 Группировка данных SELECT surname, count(*)'Кол-во' FROM people group by
по фамилиям, выяснить сколько людей проживают с одинаковыми фамилиями

Слайд 14

Отбор данных

Выбор данных из нескольких таблиц
Группировка данных
Отбор по сгруппированным данным
База данных «Касса»

Отбор данных Выбор данных из нескольких таблиц Группировка данных Отбор по сгруппированным данным База данных «Касса»

Слайд 15

Отбор данных

3 Отбор по сгруппированным данным

HAVING определяет условие поиска для группы, обычно

Отбор данных 3 Отбор по сгруппированным данным HAVING определяет условие поиска для
используется в предложении GROUP BY. Когда GROUP BY не используется, предложение HAVING работает так же, как и предложение WHERE.

Слайд 16

Отбор данных

3 Отбор по сгруппированным данным

SELECT
surname, count(*) 'Кол-во'
FROM
people
group

Отбор данных 3 Отбор по сгруппированным данным SELECT surname, count(*) 'Кол-во' FROM
by
surname
HAVING
count(*)>4000
ORDER BY
count(*) desc

Вывести только те фамилии, под которыми проживают больше 4000 человек (отсортировать по убыванию кол-ва)

Слайд 17

Отбор данных

3 Отбор по сгруппированным данным

SELECT
surname, count(*) 'Кол-во',
min(birthday)'др'
FROM

Отбор данных 3 Отбор по сгруппированным данным SELECT surname, count(*) 'Кол-во', min(birthday)'др'
people
group by
surname
HAVING
count(*)>4000

Вывести только те фамилии, под которыми проживают больше 4000 человек, а так же вывести дату рождения самого старого

Слайд 18

Отбор данных

Выбор данных из нескольких таблиц
Группировка данных
Отбор по сгруппированным данным
База данных «Касса»

Отбор данных Выбор данных из нескольких таблиц Группировка данных Отбор по сгруппированным данным База данных «Касса»

Слайд 19

Отбор данных

4 База данных «Касса»

type_commodity – тип товара (id – идентификатор типа

Отбор данных 4 База данных «Касса» type_commodity – тип товара (id –
товара; name – наименование типа товара)

commodity – перечень товаров (id – идентификатор товара; id_type – тип товара; name – наименование товара; price – цена за единицу товара)

сash – кассовые чек(day – дата чека; id – номер чека; id_comm – идентификатор товара; count – кол-во товара)

Слайд 20

Отбор данных

4 База данных «Касса»

type_commodity

commodity

Отбор данных 4 База данных «Касса» type_commodity commodity

Слайд 21

Отбор данных

4 База данных «Касса»

cash

Отбор данных 4 База данных «Касса» cash

Слайд 22

Отбор данных

4 База данных «Касса»

Запросим данные о продаже каждой единицы товара по

Отбор данных 4 База данных «Касса» Запросим данные о продаже каждой единицы
каждому чеку с указанием всех известных данных (дата продажи, номер чека, тип товара, наименование товара, цена, кол-во)

Слайд 23

Отбор данных

4 База данных «Касса»

SELECT
a.day, a.id, c.name, b.name, b.price, a.count
FROM
cash

Отбор данных 4 База данных «Касса» SELECT a.day, a.id, c.name, b.name, b.price,
a,
commodity b,
type_commodity c
Where
a.id_comm = b.id and c.id=b.id_type

Слайд 24

Отбор данных

4 База данных «Касса»

SELECT
count(*)
FROM
cash

Сколько всего позиций было продано за

Отбор данных 4 База данных «Касса» SELECT count(*) FROM cash Сколько всего
все дни?

Ответ: 25

Слайд 25

Отбор данных

4 База данных «Касса»

SELECT
day, count(*)
FROM
cash
group by
day

Сколько всего позиций

Отбор данных 4 База данных «Касса» SELECT day, count(*) FROM cash group
было продано в рамках каждого дня?

Слайд 26

Отбор данных

4 База данных «Касса»

Рассчитать итоговую сумму по каждому чеку?

1) Рассчитаем расходы

Отбор данных 4 База данных «Касса» Рассчитать итоговую сумму по каждому чеку?
по каждой позиции

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,

Отбор данных 4 База данных «Касса» 2) Сгруппируем данные и применим функцию
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 База данных «Касса»

Какой самый популярный товар? Отсортировать по популярности по

Отбор данных 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.

Отбор данных 4 База данных «Касса» Вывести только те товары, популярность которых
Отсортировать по популярности по убыванию

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 База данных «Касса»

Вывести самый популярный тип товара, отсортировать по популярности

Отбор данных 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