SQL. Решаем ТЕСТОВЫЕ ЗАДАНИЯ из AMAZON и FACEBOOK (подробный разбор)

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ก.ค. 2024
  • Сегодня вместе будем решать задачи по SQL с собеседований топовых технических компаний - Amazon и Facebook. Видео будет интересно как тем, кто учит SQL с нуля, так и тем, кто уже работает в IT и планирует проходить собеседования.
    Напишите, пожалуйста, если видео было полезным и стоит ли снимать ещё такие разборы?
    Полезные ссылки:
    www.stratascratch.com/
    www.sql-ex.ru/
    Таймкоды:
    00:00 - Где искать задачи с собеседований IT-компаний?
    00:53 - Решаем задачу из Amazon
    09:36 - Решаем задачу из Facebook
    20:44 - Задача со звездочкой из моей работы. Пишите ваши решения в комментарии!
    Меня зовут Андрей - я работаю продуктовым аналитиком в IT стартапе и на этом канале (Noukash) я рассказываю про IT и стартапы. Будут разборы профессий, советы, истории. Подписывайтесь и оставляйте комментарии)
    Instagram: / noukash
    ТГ Чат для общения: t.me/noukash_it

ความคิดเห็น • 69

  • @traktin4590
    @traktin4590 2 ปีที่แล้ว +25

    О, решение задач! То, что нужно. Спасибо за видео!

  • @piktogor
    @piktogor 2 ปีที่แล้ว +48

    Блиииин… как круто! Всегда думал, что пока не познаешь SQL, Python, статистику, алгоритмы …. нечего даже соваться на должность продуктового аналитика. А тут человек с опытом говорит, что что-то не знать или забывать это нормально. Я прям заряжен после этого видео. Большое спасибо 🙏🏻

    • @freedomtv2295
      @freedomtv2295 ปีที่แล้ว +2

      Так забыть можно, но совсем не знать нельзя, а знать надо очень хорошо

    • @piktogor
      @piktogor ปีที่แล้ว

      @@freedomtv2295 согласен

    • @SaltLakeCity_tog
      @SaltLakeCity_tog ปีที่แล้ว +2

      Не знаю у кого как, мне хватает select * чтобы потом зафильтровать данные в query и запихать их в pivot
      Но изучить питон хочется, да

  • @user-ur2id1ut9k
    @user-ur2id1ut9k 2 ปีที่แล้ว +6

    Спасибо огромное. Очень интересно . Можешь продолжить такие разборы делать 🙏👋🏿👍👏

  • @user-li7hi9em2o
    @user-li7hi9em2o ปีที่แล้ว +3

    Андрей, спасибо, смотрю твои видосы с удовольствием. Так доходчиво и по-доброму)

  • @lelich7
    @lelich7 2 ปีที่แล้ว +1

    Очень крутой формат! Спасибо!

  • @user-rq7oi6le9b
    @user-rq7oi6le9b ปีที่แล้ว

    Спасибо за видео, хотелось бы побольше подобных с решениями задач!

  • @RROxanaSS
    @RROxanaSS ปีที่แล้ว +1

    Отличное видео! Спасибо

  • @user-vh1yn1gq5t
    @user-vh1yn1gq5t 7 หลายเดือนก่อน

    Отличные реккомендации, сайты классные! Спасибо!

  • @georgyozbetelashvili3930
    @georgyozbetelashvili3930 2 ปีที่แล้ว +3

    Крутой канал. Сейчас увидел в ТГ ссылку, сразу подписался! Тоже хочется стать продуктовым аналитиком

    • @Noukash
      @Noukash  2 ปีที่แล้ว

      Спасибо за комментарий!) И удачи в освоении профессии :)

  • @ExcelStore
    @ExcelStore 2 ปีที่แล้ว +4

    Спасибо за видео! Доступно и понятно.

    • @Noukash
      @Noukash  2 ปีที่แล้ว +1

      Спасибо вам за комментарий!)

  • @yuripryadko3111
    @yuripryadko3111 2 ปีที่แล้ว +1

    самое полезное видео на всем канале, ладно, одно из)

  • @eb6006
    @eb6006 ปีที่แล้ว

    Даже очень круто, где-то бы поднатаскаться по SQL, и поиску в массиве и сортировках

  • @_GreenSnake_
    @_GreenSnake_ ปีที่แล้ว

    Спасибо за Ваш труд

  • @aysenjol3341
    @aysenjol3341 หลายเดือนก่อน

    Очень полезные видео снимаешь 👍 Спасибо ☺️

  • @elmira363
    @elmira363 2 ปีที่แล้ว

    Только начинаю
    Спасибо за труд!
    Лайк и подписка прибыли! )) успеха!

  • @vladnn8322
    @vladnn8322 2 ปีที่แล้ว +1

    Очень полезно!

  • @amiran_g
    @amiran_g 2 ปีที่แล้ว +1

    Подсяду на Ваши видосы, полезно

  • @user-vb7ms8yx8g
    @user-vb7ms8yx8g 2 ปีที่แล้ว +2

    Даешь, больше SQL!!!

  • @user-lc1ps9rd3m
    @user-lc1ps9rd3m 2 ปีที่แล้ว +16

    Было бы здорово, если бы разбирались задачи с собеседований по статистике

    • @Noukash
      @Noukash  2 ปีที่แล้ว +5

      Обязательно будет! И по терверу тоже разбор будет

  • @user-jn1mz3uh2t
    @user-jn1mz3uh2t ปีที่แล้ว

    Рубашка огонь, сам на ex тренируюсь

  • @VitaliyZlobin
    @VitaliyZlobin 2 ปีที่แล้ว +5

    Это реально крутой совет, помню как устраивался аналитиком после sql-ex и реально я знал только синтаксис SQL, а не его практическое применение.
    На 9:30 решение не только извращённое, оно ещё и по производительности плохое - 2 раз в таблицу нужно ходить. Но это скорее разрабам полезно знать, аналитикам пофиг))
    Благодарю за видео! Новичкам буду рекомендовать этот сайт, после 20-30 задач на sql-ex

    • @Noukash
      @Noukash  2 ปีที่แล้ว +5

      У меня никогда в основной работе не было задачи оптимизировать запросы по производительности. Поэтому какой костыль написал и нормально))) Но это действительно может быть важно - хорошее замечание. Спасибо :)

  • @yusifibragimov4311
    @yusifibragimov4311 ปีที่แล้ว

    Спасибо!

  • @jimivlob
    @jimivlob 2 ปีที่แล้ว +1

    системно, подробно, интересно расписаны выпуски
    лайк+коммент+подписка
    желаю тебе как можно скорее стать продактом!

    • @Noukash
      @Noukash  2 ปีที่แล้ว

      Спасибо огромное за комментарий и пожелание :)

  • @TimofeySuyargulov
    @TimofeySuyargulov 2 ปีที่แล้ว +5

    Я человек простой. Вижу новое видео от Андрея - ставлю лайк

    • @Noukash
      @Noukash  2 ปีที่แล้ว

      Спасибо Timo

  • @cor4win
    @cor4win 2 ปีที่แล้ว +8

    Не знал про stratascratch, спасибо)
    Во втором задании все-таки решение через case выглядит элегантнее: меньше кода, проще читается, но это субъективно) Сразу о нем подумал, еще до открытия решений)
    И без форматирования кода сложновато читается в моментах как на 17:18, например. Без отступов всё превращается в кашу, особенно новичкам может быть сложно понять такой код.

    • @Noukash
      @Noukash  2 ปีที่แล้ว +2

      Спасибо за комментарий! Да, по разному можно решить, я если есть возможность лучше лишний раз заджойню, хотя может быть ресурсозатратно. Про форматирование да, это точно! Учту

  • @johnconnor7338
    @johnconnor7338 2 ปีที่แล้ว +8

    Большое спасибо за выпуск! как раз то что я искал последнее время. Я учусь на Системного аналитика на курсах sk**********(знаю знаю это никому не нужно итд. мне так удобно) сейчас пытаюсь проглотить книгу по SQL от Алексанрова вы вроде еще в каком то видео советовали одну книгу , но я забыл в каком. Пытался решать задачки сам, но мне там так на сували, что я обратился к литературе, надеюсь поможет, смотрю ваши видео по нескольку раз очень интересно. По аналитике их к сожалению не много интересных от других тоарищей. У меня фарм. образование , хочу стать аналитиком в фарм индустрии надеюсь потяну, честно, для гуманитария это непросто но профессия жуть как интересная очень расширяет рамки познаваемого. Ваши видео очень помогли с мотивацией, не бросайте! Анализирую что 100к подписчиков у вас будет

    • @Noukash
      @Noukash  2 ปีที่แล้ว +2

      Спасибо большое за такое комментарий! И удачи с обучением. В будущем обязательно будет больше видео про аналитику и разбор основных понятий/инструментов и задач. Рад, что видео полезны :)

    • @johnconnor7338
      @johnconnor7338 2 ปีที่แล้ว

      @@Noukash было бы круто, я буду очень ждать

  • @InvisibleEssence
    @InvisibleEssence 2 ปีที่แล้ว +7

    Спасибо за выпуск, очень интересно!
    SQL начала изучать недавно, с удовольствием решаю всякие задачки)
    А вашу задачку попробовала решить так:
    если у нас только ежемесячная подписка (то есть отмена возможна только в течение месяца после покупки), то в новой таблице (t1) даты отмены привести к датам как из таблицы (t2) с датами appstore. А потом посмотреть какие данные из таблиц не пересекаются. Примерно так:
    with sub_1 as
    (select
    user_id,
    to_char(app_store_date, 'YYYY-MM-DD')::date as app_store_date
    from(
    SELECT event, created_at, user_id,
    lag(created_at) over (partition by user_id order by created_at asc)+interval '1 month' as app_store_date
    FROM public.t1) as sub
    where event='canceled')
    select
    t2.user_id,
    t2.date,
    sub_1.app_store_date,
    sub_1.user_id
    from public.t2 t2 full outer join sub_1 on t2.user_id=sub_1.user_id and t2.date=sub_1.app_store_date
    where countevent='canceled' and ((t2.user_id is NULL and t2.date is NULL) or (sub_1.user_id is NULL and sub_1.app_store_date is NULL))

  • @user-ok8ju6zb6r
    @user-ok8ju6zb6r ปีที่แล้ว +3

    Самая простая функция по датам DATEDIFF, почему вы ее не используете, вычитание это ненадежно
    Спасибо за разбор!

    • @khukhua
      @khukhua 9 หลายเดือนก่อน

      Автор сказал что она не работает в этом диалект где тренажёр

  • @yulia23714
    @yulia23714 2 ปีที่แล้ว

    Кстати, не во всех диалектах можно писать Group by 1, 2. В кликхаусе, например, нельзя, в вертике можно

    • @Noukash
      @Noukash  2 ปีที่แล้ว

      Спасибо за комментарий! Не знал такой особенности

  • @rotvx
    @rotvx 2 ปีที่แล้ว

    не учитываешь версии MS SQL... приходиться поддерживать старые верси в которых нет WITH, OVER etc.... поэтому есть только JOIN-s

  • @GPTMusic-nx4qn
    @GPTMusic-nx4qn 2 หลายเดือนก่อน

    Интересно, но я так и не понял, зачем в запросе нижнее подчеркивание...?

  • @user-mp3hq9xk3u
    @user-mp3hq9xk3u 2 หลายเดือนก่อน

    Как я понимаю на StrataScratch уже нельзя проверять ответы без подписки?

  • @alexanderpustota4206
    @alexanderpustota4206 9 หลายเดือนก่อน

    Последняя задача непонятна: "Хорошо ли, для всех ли пользователей приходят отмены". Что значит хорошо, а что значит плохо? Как они могут не приходить и каким образом это можно отловить?

  • @user-jn1mz3uh2t
    @user-jn1mz3uh2t ปีที่แล้ว

    Diff, sub_date, date_sub?

  • @Forest_dahfksd
    @Forest_dahfksd ปีที่แล้ว

    Некоторые пользователи пишут замудреные запросы, которые быстрее отрабатываются.
    Аналитиков просят писать оптимизированные запросы?)))

  • @Krakatoa_27
    @Krakatoa_27 2 ปีที่แล้ว +1

    Спасибо за видео и новый ресурс!
    Но за group by 1,2 дизреспект. Крайне неудобная штука для будущего легаси.

  • @user-rl4nw2rt1y
    @user-rl4nw2rt1y 2 หลายเดือนก่อน

    Канкел😂

  • @ArtemKuznetsovTV
    @ArtemKuznetsovTV 2 ปีที่แล้ว

    На какие позиции фб/Амазон спрашивает sql? Ни разу такого не встречал

    • @Noukash
      @Noukash  2 ปีที่แล้ว +1

      На аналитические позиции. Все что связано с data science, product analytics

    • @ArtemKuznetsovTV
      @ArtemKuznetsovTV 2 ปีที่แล้ว +1

      @@Noukash понятно, спасибо. Не встречал людей на этих позициях, их кажется мало очень. В соседних командах таких нет.

    • @ivani3237
      @ivani3237 ปีที่แล้ว

      ну на дата инженера 100% надо знать хорошо sql ..

    • @ArtemKuznetsovTV
      @ArtemKuznetsovTV ปีที่แล้ว

      @@ivani3237 да, я уже глянул гайдлайн по собеседованимя, действительно спрашивают. Когда проводишь интервью у обычных SDE не особо знаешь, что там у других направлений :-)

  • @maximgesler
    @maximgesler 2 ปีที่แล้ว

    Такой сайт для Python есть ?

    • @Noukash
      @Noukash  2 ปีที่แล้ว +1

      Да, там есть задачи и для python :)

    • @maximgesler
      @maximgesler 2 ปีที่แล้ว +1

      @@Noukash можно показать, задачки для каждого уровня, интересно даже посмотреть какую задачу на junior позицию в собеседованиях

  • @michaelketov
    @michaelketov 2 ปีที่แล้ว +3

    Автор конечно странный, оценивать запросы с точки зрения "красивости". Как по мне единственный правильный критерий - скорость выполнения. Толку от красивости , если он выполняется в разы дольше "некрасивого"

    • @ivani3237
      @ivani3237 ปีที่แล้ว +3

      ну второй критерий - читабельность, при прочих равных надо писать так чтобы было понятно

    • @user-tt3hu6pd3y
      @user-tt3hu6pd3y 4 วันที่ผ่านมา

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

    • @michaelketov
      @michaelketov 3 วันที่ผ่านมา

      @@user-tt3hu6pd3y когда у тебя несколько тысяч юзеров и каждый хочет ,чтобы запросы летали , то глубоко наплевать на красивость. а для читабельности запроса есть такая хрень как комментарии. нормально закомментированный код с документацией может быть любой сложности.

  • @sergey-chigarev
    @sergey-chigarev ปีที่แล้ว

    Оконные функции это полный капец и мозговыверт! Абсолютно непонятный синтаксис и логика.
    В вот заджоинить таблицу с собой и разницу дат указать в условии джоин очевидное решение как по мне. Интересно, какой вариант быстрее

    • @user-nc9sl2wv5r
      @user-nc9sl2wv5r ปีที่แล้ว

      На первый взгляд именно так и кажется, но... как всегда есть нюансы. Во первых, синтаксис оконных функций только на первый взгляд кажется непонятным. После того как вы нагуглите где нибудь картинку схематично показывающую смысл определения окна поверх вашей выборки-все резко прояснится. Во вторых, использование концепции окна позволяет избежать избыточной выборки данных. Когда вы делаете JOINT-ы даже той самой таблицы на себя же саму - сервер по факту извлекает и повторно обрабатывает данные, шарит по ключам, индексам, выполняет сравнения и сопоставления условий в ON секции. Попробуйте выполнить EXPLAIN для вашего сложносоставного запроса и посмотреть что по факту делает сервер чтобы его обработать. При использовании оконных функций - данные извлекаются только один раз, при первом считывании таблицы, а оконные функции манипулируют все тем же набором данных, просто "тасуют" его так, как вы определите в условиях разбивки на фреймы и правилах упорядочивания внутри окна. Т.е. вы избавляете сервер от лишних операций выборки и соответственно экономите ресурсы. Ну и еще, эти функции позволяют например легко вычислить разницу между какими то значениями, переместив логику предварительной обработки данных на сторону сервера, это может быть критично для систем где высока стоимость пересылки данных, или их последующей обработки на стороне приложения(например написанного на "тяжелом" скриптовом языке который работает медленно, и неэффективно расходует память для хранения переменных). В этих случаях обычно становится выгодно максимально предварительно обработать данные уже на этапе SQL запроса, чтобы получить компактную "выжимку" именно тех данных которые нужны вашему приложению, а не извлекать вагон и тележку значений, гонять их по сети, а потом их обрабатывать в приложении порождая кучу объектов и тратя под это память.

    • @SuperPrimus
      @SuperPrimus 3 หลายเดือนก่อน

      Кстати, join саму с собой - это чуть ли не единственный вариант решить такую задачу запросом 1С, где в принципе нет оконных функций.

  • @user-ec5ut2fi4n
    @user-ec5ut2fi4n 2 ปีที่แล้ว

    Ресурс интересный и полезный, но есть замечание по первой задаче от амазона, запрос провалился, но решение не верное. В концовке должно быть
    select distinct user_id from preptable where next_purchase_at-created_at