Запросы в 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 – Вывод информации о локации сотрудников