Решаю РЕАЛЬНОЕ тестовое от КРУПНОГО БАНКА на должность аналитика данных
HTML-код
- Опубликовано: 28 авг 2024
- t.me/+SQ09-7nS...
В этом ролике решаю реальное тестовое задание, которое попалось одному из моих учеников во время поиска работы.
анализ данных, sql, pandas, python, dwh, ds, data science, аналитик, бизнес, системный
Recursive вроде необязательно писать, а даты в календаре я бы сделал с помощью generate series, а так решение есть и это главное, да first_value для оконки можно использовать
1. Наверное, не было смысла в cte-шке порождать все даты сплошняком. По заданию же нужны только первые числа, достаточно взять первое января и в рекурсивной части прибавлять просто месяц.
2. Кажется, курс на дату можно получать и без использования оконных функций: сначала к датам join таблицы курсов по неравенству, затем к ней же ещё раз left join таблицы курсов по неравенству дат, и в секции where отсекать лишнее по условию «ключ второй таблицы is null»
Простите, а как прибавлять просто месяц? В каждом месяце разное количество дней, а нужно учесть и 01.02 и 04.03. То есть если 30 января есть курс, 31 января есть курс, 01 февраля есть курс, то нужно выбрать именно 1 февраля. А если нет курса 1 февраля, то нужно брать значение ранее
@@nataliepodgainova6582 в задании конкретно сказано, что нужен курс на 1 число каждого месяца. Первое число в любом месяце есть, февраль или апрель - без разницы
Как прибавлять месяц - ну функцией date_add(…, interval 1 month) если речь про mysql
Вот код на VBA без всяких костылей в лице пандаса и sql. Перестарались Вы, а так задачка для первого курса.
For i = 3 To 14
If (Day(Sheets(1).Cells(i, 5)) 1) And Sheets(1).Cells(i, 5) "" Then
m = Month(Sheets(1).Cells(i, 5)) + 1
Sheets(1).Cells(m + 2, 9) = "01." + Str(m) + ".2024"
Sheets(1).Cells(m + 2, 10) = Sheets(1).Cells(i, 6).Value
End If
If Day(Sheets(1).Cells(i, 5)) = 1 Then
m = Month(Sheets(1).Cells(i, 5))
Sheets(1).Cells(m + 2, 9) = "01." + Str(m) + ".2024"
Sheets(1).Cells(m + 2, 10) = Sheets(1).Cells(i, 6).Value
End If
Next i
For i = 3 To 14
If Sheets(1).Cells(i, 9) = "" Then
Sheets(1).Cells(i, 9) = "01." + Str(i - 2) + ".2024"
Sheets(1).Cells(i, 10) = Sheets(1).Cells(i - 1, 10)
End If
Next i
дело в том что решать ТРЕБУЕТСЯ в sql
а за решение в vba респект, только он мало где нужен и платят за эти знания немного, или нет?
@@takethejunioroutofthelamp Я только ради спортивного интереса, думал логика функции нужна. В общем не прошел я Ваше собеседование(((
@@kerrigan_katyakatya9377все еще впереди)
Прикол в том, что такое на 1 курсе не решают. Тут самому нужно изучать
На вскидку... создать таблицу с первыми числами месяцов dates_list... дальше... select date, (select rate from rates rt where rt.date
Я так же думал но вместо order by… limit 1 хотел group и max() написать. Но ордер кажется быстрее отработает.
У нас подобную задачку давали разрабам в 2007
Похоже что некоторые вещи не меняются)
А нельзя по столбцу с датами из первой таблицы пройтись и просто взять курс на первое число или, если его нет, то на предыдущую дату?
кидай код, как это будешь делать)
@@takethejunioroutofthelamp могу код а конфеты дашь?
@@digertdoment4326конфеты с комплиментом от шеф-повара
Длбрый день, что за IDE в видео?
table plus
Для Python это Jupyter
@@takethejunioroutofthelamp платная(
В решении не объяснили алгортм предсказания курса
что значит не обьяснил?
@@takethejunioroutofthelamp имеется ввиду, непонятно, почему именно такие результаты получились. Если есть ссылка на теорию, было бы полезно