Программы
Подготовка к собеседованиямA/B-тесты для аналитиковML и Causal InferenceA/B-тесты для менеджеровОбучение для командБаза знанийОтзывыО проектеОставить заявку
SQL

Блиц в Авито

Что проверяет: оконные функции lag, group by с distinct, поведение join и фильтров

Условие

Блиц-вопросы по SQL из тестового в интернет-сервис объявлений

В каждом вопросе есть только один правильный ответ. При решении считать, что все запросы синтаксически корректны.

1) В таблице Revenue три колонки:

колонкаописание
event_dateдата
user_idуникальный id пользователя
revenueвыручка от пользователя в этот день

Какую из колонок нужно добавить в запрос,

select event_date, user_id, revenue, <?>
from revenue
order by event_date desc, user_id

чтобы в ней на каждый день содержалась доля выручки пользователя в этот день от выручки того же пользователя в предыдущий день?

Для каждой комбинации user_id, event_date есть только одно значение revenue, в данных нет Null-ов.

a) revenue/lag(revenue) over(order by user_id, event_date),
b) revenue/lag(revenue) over(partition by user_id order by event_date),
c) revenue/lag(revenue) over(order by event_date),
d) revenue/lag(revenue) over(partition by user_id, event_date order by user_id, event_date)

select distinct a, b, c, sum(d) as revenue
from table
group by a, b, c

Сколько строк вернет данный запрос, если такой же запрос без «distinct» вернет 600 строк, а в столбце revenue содержится 117 уникальных значений?

a) 483
b) 600
c) 117
d) 561

3) Какой запрос вернет самое большое число?

Для справки: (A right join B) эквивалентно (B left join A).

a)

select count(distinct first.counter_column)
from first
left join second
    on first.join_key = second.join_key
where second.filter_column >= 5

b)

select count(distinct first.counter_column)
from first left join second
    on first.join_key = second.join_key
    and second.filter_column >= 5

c)

select count(distinct first.counter_column)
from first right join second
    on first.join_key = second.join_key
where second.filter_column >= 5

d)

select count(distinct first.counter_column)
from first right join second
    on first.join_key = second.join_key
    and second.filter_column >= 5
Оригинал в Telegram →