СберЗдоровье
1. Компания получила результат оценки знания ЯП у сотрудников.
Получите общую среднюю оценку по каждому языку программирования
array = [
{'name': 'Petr', 'subject': 'Python', 'score': 97},
{'name': 'Max', 'subject': 'C++', 'score': 70},
{'name': 'Petr', 'subject': 'C++', 'score': 45},
{'name': 'Max', 'subject': 'Python', 'score': 60},
{'name': 'Petr', 'subject': 'SQL', 'score': 65},
{'name': 'Max', 'subject': 'SQL', 'score': 100}
]
Пример вывода:
Python — 78.5
C++ — 57.5
SQL — 82.5
C — 100.0\
{'python': [97, 60]
'C++': [70, 45]}
d = {}
for i in array:
if i['subject'] not in d.keys():
d[i['subject']] = []
d[i['subject']].append(i['score'])
for ii in d:
print(f"{ii} - {sum(d[ii])/len(d[ii])}")
2. Построить историю изменений из таблицы source в результате получив таблицу target
-- table_name: source
item_id | date | value
1 | 2022-01-01 | 100
1 | 2022-02-03 | 200
2 | 2022-02-01 | 100
2 | 2022-04-10 | 500
2 | 2022-05-15 | 400
-- Построить историю изменений из таблицы source в результате получив таблицу target
-- table_name: target
item_id | date_from | date_to | value
1 | 2022-01-01 | 2022-02-03 | 100
1 | 2022-02-03 | 9999-01-01 | 200
2 | 2022-02-01 | 2022-04-10 | 100
2 | 2022-04-10 | 2022-05-15 | 500
2 | 2022-05-15 | 9999-01-01 | 400
select item_id, date as date_from, lead(date,1,'9999-01-01') over (partition by item_id order by date) as date_to, value
from source