- •Цель работы
- •Вариант задания
- •Ход работы
- •Подключение к субд PostgreSql
- •Создание новой таблицы с помощью Python и заполнение её данными
- •Запросы в Python
- •Создание функции select_data
- •Создание собственной пользовательской функции
- •Список использованных источников
- •Приложение а Полный листинг кодов
- •Заключение
Запросы в Python
Запрос 1. Выяснить, сотрудники какой профессии получают зарплату меньше 2500. Код представлен в листинге 5.
Листинг 5 – Вывод профессий сотрудников, которые получают зарплату меньше 2500
query = "SELECT job_title FROM public.jobs WHERE min_salary < 2500;" cursor.execute(query)
result = cursor.fetchall() for record in result: print(record[0])
connection.commit() |
Код выполняет запрос SELECT, который возвращает название должности и среднюю зарплату сотрудников, получающих зарплату менее 2500. Запрос извлекает эту информацию из таблицы "jobs" в базе данных "students".
Наконец, код извлекает и печатает результат запроса, который представляет собой список названий должностей и средней зарплаты сотрудников, получающих зарплату менее 2500.
Результат работы кода представлен на рисунке 6.
Рисунок
6 – Вывод профессий сотрудников, которые
получают зарплату меньше 2500
Запрос 2. Вывести сотрудников и их начальников (в одном столбце расположены сотрудники, во втором – их начальники). Коды представлены в листинге 6.
Листинг 6 – Вывод сотрудников и их начальников 1 вариант
query = """ SELECT e.first_name AS employee, m.first_name AS boss FROM public.employees e JOIN public.employees m ON e.manager_id = m.employee_id """
cursor.execute(query) result = cursor.fetchall()
for row in result: print(row[0], "is managed by", row[1]) |
Результат выполнения кода представлен на рисунках 7-8.
|
|
Рисунок 7 – Вывод сотрудников и их начальников 1 вариант, 1 часть |
Рисунок 8 – Вывод сотрудников и их начальников 1 вариант, 2 часть |
В данном случае код будет выполняться согласно техническому заданию, однако вывод мне показался не очень красивым, поскольку вывод одного столбца сотрудника, содержащий только имя – мало о чём говорит. Поэтому я написал второй вариант этого запроса, чтобы выводилась также фамилия сотрудника и их начальников.
Листинг 7 – Вывод сотрудников и их начальников 2 вариант
query = """ SELECT e.first_name, e.last_name, m.first_name, m.last_name FROM public.employees e JOIN public.employees m ON e.manager_id = m.employee_id """
cursor.execute(query) result = cursor.fetchall()
for r in result: print(f"Employee: {r[0]} {r[1]}, Manager: {r[2]} {r[3]}") |
Результат выполнения кода представлен на рисунках 9-10.
|
|
Рисунок 9 – Вывод сотрудников и их начальников 2 вариант, 1 часть |
Рисунок 10 – Вывод сотрудников и их начальников 2 вариант, 2 часть |
Запрос 3. Вывод информации о локации сотрудников. Этот запрос объединяет таблицы employees и locations по столбцу location_id и извлекает идентификатор сотрудника, имя, фамилию, город и почтовый индекс для каждой строки в наборе результатов. Код представлен в листинге 8. Результат выполнения кода представлен на рисунке 11.
Листинг 8 – Вывод информации о локации сотрудников
query = """ SELECT e.employee_id, e.first_name, e.last_name, l.city, l.postal_code FROM public.employees e INNER JOIN public.locations l ON e.location_id = l.location_id; """
cursor.execute(query) result = cursor.fetchall()
for row in result: print(row) |
Рисунок
11 – Вывод информации о локации сотрудников
