Как же мне было влом решать задачу! Собес на деньги: 320к - 350к на руки

Скажу честно, когда вижу задачу на собесе с лайвкодингом, сразу хочется просто скопировать в LLM и выдать ответ. Потому что оно реально так и решается. Я просто потерял смысл попыток решений таких задач. Кто пишет код вручную.. ну скорее всего сын маминой подруги. И тот самый айтишник, который в ОЙТИ еще со времен Рюрика. Кстати, выражаю огромный респект всем трушным программистам. Сейчас ОЙТИ уже не то...

Я в этот раз решил честно все пройти, попробовать. Но, как же мне было влом... Ну буквально надо вырыть яму лопатой, когда рядом стоит эксаватор) Я написал где-то четверть и полностью забил на все нюансы из условий задачи. Задача на мой взгляд непростая. В плане надо сразу несколько условий держать в голове. Плюс это CLICKHOUSE.

Какая компания, говорить не буду. Ну либо за 1млн долларов. Есть таблица ClickHouse:

CREATE TABLE default.migration_report ( RunId UUID, CollectionName String, DocumentName String, StartedAt Nullable(DateTime), CompletedAt Nullable(DateTime), LastError String ) ENGINE = ReplacingMergeTree ORDER BY RunId SETTINGS index_granularity = 8192;

Необходимо посчитать количество успешных и неуспешных загрузок за последний календарный месяц.

Результат должен содержать два столбца:

| succeeded | failed |

Условия:

1. Расчёт выполняется отдельно для каждого источника (CollectionName) и каждого календарного дня. 2. В течение одного дня у одного источника может быть несколько загрузок. 3. Если у источника произошла неуспешная загрузка (LastError != ''), то эта загрузка учитывается как failed, а все последующие загрузки этого источника в этот же день не учитываются. 4. Успешной считается загрузка, у которой LastError = ''. 5. Для преобразования даты и времени можно использовать функцию toDate().

Напишите SQL-запрос для ClickHouse.

Решение задачи WITH toStartOfMonth(addMonths(today(), -1)) AS month_start, toStartOfMonth(today()) AS month_end SELECT countIf(LastError = '' AND previous_failed = 0) AS succeeded, countIf(LastError != '' AND previous_failed = 0) AS failed FROM ( SELECT CollectionName, toDate(StartedAt) AS upload_date, LastError,

sum(LastError != '') OVER ( PARTITION BY CollectionName, toDate(StartedAt) ORDER BY StartedAt, RunId ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING ) AS previous_failed FROM default.migration_report WHERE StartedAt >= month_start AND StartedAt < month_end )

Как же мне было влом решать задачу!
Собес на деньги:
320к - 350к на руки
Скажу честно, когда вижу задачу на собесе с лайвкодингом, сразу хочется просто скопировать в LLM и выдать ответ | Сетка — социальная сеть от hh.ru Как же мне было влом решать задачу!
Собес на деньги:
320к - 350к на руки
Скажу честно, когда вижу задачу на собесе с лайвкодингом, сразу хочется просто скопировать в LLM и выдать ответ | Сетка — социальная сеть от hh.ru