Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоVK ComboВсе проекты

Помогите пожалуйста где ошибка в программе

привет пока Ученик (92), на голосовании 1 месяц назад
Вы проводите аудит в IT-компании, и для этого вам дали доступ к БД. В исходных таблицах, конечно, заполнены все поля. Но согласно правам доступа у вас может не быть доступа к каким-то значениям, в этом случае в базе они будут равны NULL.

Доступны следующие таблицы и связи между ними:

Таблица Employees. Содержит всех сотрудников, состоит из следующих колонок:

id — уникальный идентификатор сотрудника
name — имя сотрудника
surname — фамилия сотрудника
birthday — день рождения (в формате строк dd-mm-yyyy)
start_date — дата начала работы в компании (в формате unix timestamp)
phone — мобильный телефон
telegramm — логин в Telegramm
manager_id — айди менеджера, которому подчиняется текущий сотрудник

Таблица Salary (в случае изменения зарплаты создается новая строчка в таблице):

id — уникальный ключ записи
employee_id — айди сотрудника
value — значение месячной зарплаты
bonus — процент от месячной зарплаты, который будет выплачен в качестве бонуса
currency_id — валюта для зарплаты
date — дата, с которой эта зарплата выплачивается (в формате unix timestamp)

Таблица Currency:

id — идентификатор валюты
ratio — курс к стандартной внутренней велюте
Вам необходимо найти и вывести средний размер бонуса в процентах по каждой валюте.

Для этого надо реализовать функцию get_result с указанным интерфейсом:

def get_result(db_name: str) -> dict[int, float]: ...
Примечания
Для работы с БД следует использовать модуль sqlite3, в таком случае получение подключения к базе будет выполнено с помощью conn = sqlite3.connect(db_name).
Вот задание, но у меня не правильно, вот код, пишет что где ошибка при выполнении, но не показывает, помогите пожалуйста

import sqlite3


def get_result(db_name: str):
conn = sqlite3.connect(db_name)
cursor = conn.cursor()
results = {}
cursor.execute("SELECT id, ratio FROM Currency Where (id is not null and ratio is not null);")
currencies = dict(cursor.fetchall())
for currency_id, ratio in currencies.items():
cursor.execute("""
SELECT AVG(bonus)
FROM Salary
WHERE currency_id = ?
""", (currency_id,))
average_bonus = cursor.fetchone()[0]
results[currency_id] = average_bonus * 100 / ratio
conn.close()
return results
Голосование за лучший ответ
Максим Онисенко Знаток (349) 2 месяца назад
timestamp) Таблица Departments: id — уникальный идентификатор department_name — название отдела Таблица Roles: id — уникальный идентификатор role_name — роль Название роли может быть “manager” (менеджер) или “developer” (разработчик) Таблица Role_Departments: role_id — идентификатор роли department_id — идентификатор отдела Связь между таблицами: Employees.manager_id -> Roles.id -> Role_Departments.role_id -> Departments.id Salary.employee_id -> Employees.id Roles.department_id -> Departments.id Валюты хранятся в отдельной таблице, которую мы не рассматриваем для упрощения задачи. Задача: Провести аудит зарплат сотрудников и бонусов, выплачиваемых в зависимости от роли и отдела. Вывести следующую информацию: Имя, Фамилия сотрудника, Название отдела, Роль, Месячная зарплата, Бонус в процентах от зарплаты. Если у сотрудника нет доступа к какому-либо значению, то в выводе для этого поля должно стоять NULL. Если у роли или отдела нет доступа к какой-либо информации, то она также должна быть NULL.
Похожие вопросы