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

แชร์
ฝัง
  • เผยแพร่เมื่อ 17 ม.ค. 2025

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

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

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

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

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

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

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

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

      @@freedomtv2295 согласен

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

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

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

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

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

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

  • @ИлонаИнч
    @ИлонаИнч 2 ปีที่แล้ว +3

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

  • @АнарГусейнов-с5ы
    @АнарГусейнов-с5ы 2 ปีที่แล้ว +6

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

  • @InvisibleEssence
    @InvisibleEssence 3 ปีที่แล้ว +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))

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

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

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

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

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

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

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

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

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

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

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

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

  • @ДмитрийМ-х9щ
    @ДмитрийМ-х9щ ปีที่แล้ว

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

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

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

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

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

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

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

  • @КириллПотехин-й9ф
    @КириллПотехин-й9ф 3 ปีที่แล้ว +16

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

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

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

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

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

  • @ЛарисаКостенкова-к2й
    @ЛарисаКостенкова-к2й ปีที่แล้ว

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

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

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

  • @Руслан-п5в1ж
    @Руслан-п5в1ж 3 ปีที่แล้ว +2

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

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

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

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

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

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

      Спасибо Timo

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

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

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

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

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

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

  • @СергейЩепилин
    @СергейЩепилин 2 ปีที่แล้ว

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

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

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

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

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

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

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

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

    Спасибо!

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

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

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

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

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

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

  • @ИринаКузнецова-х8п6э
    @ИринаКузнецова-х8п6э 2 ปีที่แล้ว +3

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @СергейЩепилин
    @СергейЩепилин 2 ปีที่แล้ว

    Diff, sub_date, date_sub?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Канкел😂

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

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

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

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

    • @СяотестерСяомей
      @СяотестерСяомей ปีที่แล้ว

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

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

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

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

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

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

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

    • @АндрейУшаков-ж9м
      @АндрейУшаков-ж9м 5 หลายเดือนก่อน

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

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

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

  • @МихалМихалыч-в8х
    @МихалМихалыч-в8х 2 ปีที่แล้ว

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