Сначала позакрывали производства, теперь принялись за тех, кто зарабатывает на жизнь мозгами. Они реально считают, что так резко обосрав сложившиеся устои, они сделают новый прекрасный мир? Кто их говно будет покупать? Безработные? Все закончится чем-то нехорошим, где Цукерберг с Альтманом будут на фонарях болтаться.
А если работодатель считает наличие усов или бороды большим преимуществом соискателя?
Если у соискателя много времени уходит на сторонние проекты, то это значит, что он время на них изыскивает за счёт чего-то ещё, личной жизни например. Потом у человека появится личная жизнь, и он будет уже выбирать из чего-то другого, например тратя рабочее время на это.
Это если проекты не приносят деньги, а если приносят, то тогда вопрос - а где его работа вообще?
В том-то и дело, что дело до full outer join-а не должно было дойти, если речь шла о том, какое максимальное количество строк вернёт любой джоин при любом условии объединения. Full outer join не может вернуть больше строк, чем inner join если join condition всегда true (Cartesian product)
Как говорится, я подумал, и мы решили: минимальная мощность full outer join двух таблиц - это максимальная мощность одной из них. А максимальная мощность full outer join - это мощность декартова произведения его таблиц, что является максимальной мощностью inner join-а. Это к вопросу - зачем было приплетать редко используемый вид джоина, если можно было обойтись базой в виде inner.
c) If a <join condition> is specified, then let T be the multi-
set of rows of CP for which the specified <search condition>
is true.
То есть join может свестись к декартовому произведению (CP) при неудачном search condition. Я просто спрашивал, что там за звездочки и плюсики, причем тут full outer join и декартово произведение, почему именно full outer join (full outer join по сравнению с inner join никакого нового декартового произведения не даст)
Семантически inner join по определению в стандарте выводится через декартово произведение с дальнейшей фильтрацией по условию джоина. Full outer join просто добавит к результату inner join-а строки из обеих таблиц, не попавшие в inner join.
Интервьюверам надо изучать SQL не по диаграммкам с кружочками, а заглядывая в стандарт.
Это потом превращается в "лучше отшить сто хороших кандидатов, чем нанять одного плохого" И из цитаты про Спольского следует, что понятие испытательного срока ему чуждо. Ну или все его плохие кандидаты успешно просачиваются как через сито собеседований, так и через сито испытательного срока.
У платформы есть "основной двигатель", "кеширование промптов" и "локальная оптимизация LLM-запросов", но мы вам о них не расскажем. Очень похоже на "у нашей платформы есть уникальный алгоритм, который позволяет получать 300% годовых"
select from_date, to_date, size from (
-- определяем интервалы групп и максимальное количество параметров в группе
select min(ts) from_date, max(coalesce(next_ts, 'infinity')) to_date, grp, size, max(size) over () max_size from (
-- добавляем синтетическую id группы в виде кумулятивного кол-ва групп и добавляем дату начала следующей группы для определения конца данной группы
select *, sum(case when coalesce(prev_size, 0) <> size then 1 else 0 end) over (order by ts) grp, lead(ts, 1) over (order by ts) next_ts from (
-- делаем группы по adjacent датам с одинаковым кол-вом переопределенных параметров. сначала добавляем кол-во параметров из предыдущей группы, если это кол-во не равно текущему кол-ву параметру группы, то это новая группа
select *, lag(size, 1) over (order by ts) prev_size from (
-- добавляем количество переопределенных параметров на каждую дату. количество +1 если параметр не был переопределен и стал переопределен, -1 если был переопределен и стал не переопределен, иначе 0
select *, sum(case when value is not null and prev_value is null then 1 when value is null and prev_value is not null then -1 else 0 end) over(order by ts) size
from (
-- добавляем предыдущее значение для каждого параметра на определенную дату
select *, lag(value, 1) over(partition by parameter_name order by ts) prev_value
from params
) t
) t
) t
) t
group by grp, size
) t where size = max_size and size > 1
order by 1
with daily_jam as (
select at, sum(qty) as qty
from jam d
group by at
having sum(qty) > 0
), fresh as (
-- список дней, являющихся концом трехдневного марафона поедания варенья
select d.at
from daily_jam d
inner join daily_jam n on n.at > d.at - 3 and n.at < d.at -- два предыдущих дня
group by d.at
having (max(d.qty) + sum(n.qty)) > 3 -- количество банок за данный день и два предыдущих
and count(n.at) = 2 -- два предыдущих дня имеют место быть
)
select count(*) from (
select count(*)
from daily_jam d
inner join fresh f on f.at > d.at - 5 and f.at <= d.at -- данный день и четыре предыдущих венчали трехдневные поедания варенья
group by d.at
having count(*) = 5
) t
Это понятно. Но в задаче было 5 и 3 :) По факту это семь дней подряд с вареньем и еще так, чтобы любые три дня подряд из них было 4 и более банок варенья в сумме.
У чувака была отличная карьера, которую он спустил в унитаз за последние несколько лет.
Не обязательно вайб-архитектора, можно и нормального, но у которого в его любимой программе по просчету сопромата решили повайбкодить в новой версии.
За год с левых телефонов идет порядка тысячи звонков, через мессенджеры - два или три за лет пять.
Сначала позакрывали производства, теперь принялись за тех, кто зарабатывает на жизнь мозгами. Они реально считают, что так резко обосрав сложившиеся устои, они сделают новый прекрасный мир? Кто их говно будет покупать? Безработные? Все закончится чем-то нехорошим, где Цукерберг с Альтманом будут на фонарях болтаться.
Куда яву дели? Слишком старая?
А если работодатель считает наличие усов или бороды большим преимуществом соискателя?
Если у соискателя много времени уходит на сторонние проекты, то это значит, что он время на них изыскивает за счёт чего-то ещё, личной жизни например. Потом у человека появится личная жизнь, и он будет уже выбирать из чего-то другого, например тратя рабочее время на это.
Это если проекты не приносят деньги, а если приносят, то тогда вопрос - а где его работа вообще?
Придется собеседоваться.
У меня есть работа и семья, какой ещё гитхаб?
В том-то и дело, что дело до full outer join-а не должно было дойти, если речь шла о том, какое максимальное количество строк вернёт любой джоин при любом условии объединения. Full outer join не может вернуть больше строк, чем inner join если join condition всегда true (Cartesian product)
Как говорится, я подумал, и мы решили: минимальная мощность full outer join двух таблиц - это максимальная мощность одной из них. А максимальная мощность full outer join - это мощность декартова произведения его таблиц, что является максимальной мощностью inner join-а. Это к вопросу - зачем было приплетать редко используемый вид джоина, если можно было обойтись базой в виде inner.
Зачем мне это объяснять? Я знаю, что
c) If a <join condition> is specified, then let T be the multi- set of rows of CP for which the specified <search condition> is true.
То есть join может свестись к декартовому произведению (CP) при неудачном search condition. Я просто спрашивал, что там за звездочки и плюсики, причем тут full outer join и декартово произведение, почему именно full outer join (full outer join по сравнению с inner join никакого нового декартового произведения не даст)
Семантически inner join по определению в стандарте выводится через декартово произведение с дальнейшей фильтрацией по условию джоина. Full outer join просто добавит к результату inner join-а строки из обеих таблиц, не попавшие в inner join.
Интервьюверам надо изучать SQL не по диаграммкам с кружочками, а заглядывая в стандарт.
Можете пояснить, что вы имели ввиду?
Это потом превращается в "лучше отшить сто хороших кандидатов, чем нанять одного плохого" И из цитаты про Спольского следует, что понятие испытательного срока ему чуждо. Ну или все его плохие кандидаты успешно просачиваются как через сито собеседований, так и через сито испытательного срока.
У платформы есть "основной двигатель", "кеширование промптов" и "локальная оптимизация LLM-запросов", но мы вам о них не расскажем. Очень похоже на "у нашей платформы есть уникальный алгоритм, который позволяет получать 300% годовых"
Вторая задача
Можно и гибче
Это понятно. Но в задаче было 5 и 3 :) По факту это семь дней подряд с вареньем и еще так, чтобы любые три дня подряд из них было 4 и более банок варенья в сумме.
Господа, господа, вы упускаете одно решение (с) Рик и Морти
Задача про варенье, без оконных функций и т.д.
Осталось еще вспомнить всякие убогие *=, =*, (+)