Добавил:
t.me Установите расширение 'SyncShare' для решения тестов в LMS (Moodle): https://syncshare.naloaty.me/ . На всякий лучше отключить блокировщик рекламы с ним. || Как пользоваться ChatGPT в России: https://habr.com/ru/articles/704600/ || Также можно с VPNом заходить в bing.com через Edge браузер и общаться с Microsoft Bing Chat, но в последнее время они форсят Copilot и он мне меньше нравится. || Студент-заочник ГУАП, группа Z9411. Ещё учусь на 5-ом курсе 'Прикладной информатики' (09.03.03). || Если мой материал вам помог - можете написать мне 'Спасибо', мне будет очень приятно :) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 курс 1 семестр / Лабораторные / Z9411_КафкаРС_БД_ЛР7.docx
Скачиваний:
11
Добавлен:
24.10.2023
Размер:
664.16 Кб
Скачать
    1. Запросы в 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 – Вывод информации о локации сотрудников

Соседние файлы в папке Лабораторные