Вопросы по SQL и Базам Данных на интервью - Часть 2

Поделиться
HTML-код
  • Опубликовано: 21 сен 2024
  • Выбираем самые популярные - всего и по определенной группе.
    Видео про связи: Многие ко многим
    • Базы данных - Связь мн...
    Обо мне: www.flenov.ru
    Мой ИТ блог www.flenov.ru и www.flenov.info
    Мой просто блог blo.moe
    Tweeter: / flenov
    Инстаграмм: / mflenov
    Телеграмм: t.me/mflenov

Комментарии • 50

  • @Dev-lessons
    @Dev-lessons  7 месяцев назад

    Поддержать меня на Бусти и получить доступ к доп контенту: boosty.to/mflenov
    Обо мне: www.flenov.ru
    Мой ИТ блог www.flenov.info
    Телеграм: t.me/mflenov
    Twitter: twitter.com/flenov
    Инстаграм: instagram.com/mflenov/
    Мой просто блог blo.moe

  • @deshdesh9866
    @deshdesh9866 2 года назад +11

    Прикольно, что (судя по комментам к этому видео и не только) такие видео смотрят в основном те, кто уже знает это, а не те, кто хочет научиться.
    Знающие люди даже на собеседованиях могут предложить какой-то уникальный способ решения задачи, который никому ранее не приходил в голову.
    Спасибо за видео!

    • @Hunteralex7
      @Hunteralex7 11 месяцев назад

      К счастью, только в основном, а не в только знающие)

  • @iibixapb
    @iibixapb 2 года назад +5

    Отличные материалы, отличный автор ;) Как всегда - приятно слушать ;)

  • @Геннадий-с5э
    @Геннадий-с5э 8 месяцев назад +1

    вообще топ задачка, как раз что-то новое узнал, спасибо большое

  • @viktorgladkih8048
    @viktorgladkih8048 2 года назад +7

    ORDER BY в целом в любом SQL надо отправлять на самый верхний уровень :) . За оконные функции отдельное уважение. Не все их уважают в век ORM(Привет Django).

  • @le_mon_tree
    @le_mon_tree Месяц назад

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

  • @tamararetyunskaya4404
    @tamararetyunskaya4404 Год назад +4

    Первое что приходит на ум, Discount - это процент скидки и поэтому тип данных real ), тогда Формула выглядеть должна так: UnitPrice * Quantity * (1 - Discount)

  • @КонстантинГодзилла54
    @КонстантинГодзилла54 2 года назад +2

    Отличные видеоуроки, спасибо за контент, молодец

  • @Mr43046721
    @Mr43046721 2 года назад +3

    Большое спасибо за видео, было познавательно

  • @ДенисК-р6я
    @ДенисК-р6я 2 года назад +5

    Microsoft Bing до сих пор проигрывает Google по всем статьям и его пытаются пользователям впихивать с браузером Edge

  • @Геннадий-с5э
    @Геннадий-с5э 8 месяцев назад +1

    по поводу именования таблиц, не знаю на сколько это является стандртом в сообщество но я придерживаюсь соглашений из style guide по sql
    "Используйте собирательные имена или, что менее предпочтительно, форму множественного числа. Например, staff и employees (в порядке убывания предпочтения)."

    • @Геннадий-с5э
      @Геннадий-с5э 8 месяцев назад

      блин ссылку удаляет вот короче: www sqlstyle guide

  • @magicdragon7819
    @magicdragon7819 Год назад +2

    Спасибо за задачки. Решил быстро. Но, кажется мне, на собесе на позицию sql dev будут задавать что-то посложнее. Надо бы повторить рекусивные запросы, анализ деревьев, автозаполнение диапазонов данных, пивоты, анализ и сборку xml/json, ну и внутрянку субд: кучи, индексы такие-сякие, пейджинг, алгоритмы выгрузки страниц итп

  • @getredtm
    @getredtm 2 года назад +3

    Использовать GROUP BY в подзапросе...
    А я всё время в табличкую переменную засовывал и её джойнил. Хотя подзапросы тоже использую, но конкретно для такой ситуации - никогда (в основном, in). Жесть. Спасибо... Это гораздо быстрее.

  • @kidsgame5274
    @kidsgame5274 2 года назад +3

    Если это самые сложные вопросы по sql, то я профессор в этой области )

    • @Dev-lessons
      @Dev-lessons  2 года назад +1

      Это самые сложные, что меня спрашивали, в Канаде самые простые интервью, которые мне приходилось проходить

  • @murmor0707
    @murmor0707 2 года назад +1

    Спасибо большое!

  • @vor6758
    @vor6758 Год назад

    А у меня спросили про Data Vault и Якорную модель проектирования БД)
    Это вообще трэш

  • @user-without-nickname
    @user-without-nickname 2 года назад +2

    Дискаунт - это процент скидки. Не вычитать надо, а умножать.

    • @Dev-lessons
      @Dev-lessons  2 года назад

      Возможно процент.
      А что произойдет, если умножить?

    • @thesilencer8017
      @thesilencer8017 Год назад +1

      @@Dev-lessons По идее нужно Sum((UnitPrice * (1 - cast(Discount as Money)))* Quantity)

  • @Mr43046721
    @Mr43046721 2 года назад +2

    Был на проекте по переводу подсистемы отчетности (простая выгрузка из БД в Эксель) с MS SQL на постгрес, вся бизнес-логика отчетов была в SQL скриптах)) с курсорами, временными таблицами и пр.
    А бывало что бизнес-логика некоторых отчетов была и в SQL запросе, и в бэке))) треш

    • @Dev-lessons
      @Dev-lessons  2 года назад +2

      Я так понимаю, что треш указывает на то, что ты не очень счастлив был такой архитектуре...

    • @Mr43046721
      @Mr43046721 2 года назад +1

      @@Dev-lessons дебажить было очень трудно) все-таки бд должна отдавать сет данных, а построение отчётов лучше делать на бэке

    • @Dev-lessons
      @Dev-lessons  2 года назад

      @@Mr43046721 Да, это точно будет проблемой

  • @Геннадий-с5э
    @Геннадий-с5э 8 месяцев назад

    12:00 а разве discount Это не процент скидки типа total = (price * (1-discount) * quantity)

    • @Dev-lessons
      @Dev-lessons  8 месяцев назад +1

      Может быть. Но я решил показать именно эту сторону чисел

  • @chron9725
    @chron9725 2 года назад +1

    11:56 - Думал проверка синтаксиса ругнется на несуществующий алиас cnt, но почему-то нет.

    • @Dev-lessons
      @Dev-lessons  2 года назад +1

      Если бы я выполнил, то скорей всего была бы проблема, а так студия не всегда хорошо видит имена полей, которые возвращают подзапросы, поэтому могут быть проблемы

  • @ululult7989
    @ululult7989 2 года назад +2

    А было видео про рекурсивные запросы?

    • @Dev-lessons
      @Dev-lessons  2 года назад +6

      Во время интервью ни разу не давали подобных вопросов, но видео подобного плана действительно можно записать на канал, сделал пометку

    • @getredtm
      @getredtm 2 года назад

      ​@@Dev-lessons ПОЖАЛУЙСТА!
      и CTE - общий принцип, зачем оно (пока только применение в построении иерархии дерева папок (если не используем hierarchy_id)
      Курсор и его опции, а то простые (пример ниже) вроде устраивают, но вдруг что-то ещё полезное есть (типа local, forward_only (вообще непонятен смысл зачем, если он всегда "вперед" идёт) и т.п.
      DECLARE @calc_id INT
      DECLARE CUR CURSOR FOR
      SELECT calc_id FROM SandCalcs
      OPEN CUR
      FETCH NEXT FROM CUR INTO @calc_id
      WHILE @@FETCH_STATUS = 0
      BEGIN
      DELETE FROM SandCalcs
      WHERE calc_id = @calc_id
      FETCH NEXT FROM CUR INTO @calc_id
      END
      CLOSE CUR
      DEALLOCATE CUR

  • @aziznortozhiev5342
    @aziznortozhiev5342 2 года назад +1

    Упс, мой комментарий удален. Вопрос такой, почему бизнес логика не должна хранится в БД(хранимые процедуры, функции)?

    • @Dev-lessons
      @Dev-lessons  2 года назад +3

      Я не удаляю вопросы, но уже не первый раз слышу про пропадающие комментарии, возможно какие-то фильтры RUclips.
      По поводу логики в базе данных - ее потом сложно сопровождать, возникают проблемы с версиями и обновлениями без простоя приложения. Я об этом немного говорил в www.flenov.info/plus/content/Большие_сайты_-_Книга но думаю нужно записать полноценный видос на эту тему

    • @aziznortozhiev5342
      @aziznortozhiev5342 2 года назад

      @@Dev-lessons ждем развернутый ответ-видео. Да, во многих местах читаю, мнения разделяются, спорный вопрос. Особенно хотелось бы узнать Entity Framework или Stored Procedures в банковской среде, где требуется моментальных операций.

    • @hentan4912
      @hentan4912 2 года назад +1

      Могу отметить, что в компании где я работаю (в сфере логистики), бизнес логика практически полностью на sql, но не могу сказать что это хорошо и красиво смотрится везде..

    • @Dev-lessons
      @Dev-lessons  2 года назад +1

      @@hentan4912 Вопрос не в том, что хорошо или плохо смотрится, просто здесь есть плюсы и минусы и минусы очень даже серьезные

    • @hentan4912
      @hentan4912 2 года назад

      @@Dev-lessons ну будем ждать развёрнутой позиции по этому вопросу. Минусы с моей точки зрения это функциональность и декларативность самого языка, который в принципе не особенно предназначен для создания глобального продукта, а плюсы это маленькие накладные расходы. Это один из самых быстрых способов, чтобы ворочались большие данные

  • @politehhnik
    @politehhnik Год назад

    Здравствуйте. А почему не воспользовались LIMIT n OVER?

  • @IgorGallemar
    @IgorGallemar 2 года назад +1

    Первый!!!

  • @ВладиНайз
    @ВладиНайз Год назад

    sql-academy - зе бест

  • @maksimblack87
    @maksimblack87 2 года назад +2

    Здравствуйте, есть комментарий по поводу поля Discount. Думаю что оно спецом сделано real потому как это скидка и ее надо вычитать не напрямую, а вот так: SUM((o.UnitPrice - o.UnitPrice*(cast(o.Discount as money)))*o.Quantity)

    • @Dev-lessons
      @Dev-lessons  2 года назад

      Ну в этом примере ты кастишь, а если бы скидка хранилась в money, то кастить не пришлось бы.

    • @maksimblack87
      @maksimblack87 2 года назад

      @@Dev-lessons может разработчики так хотели намекнуть что это проценты скидки?

    • @Dev-lessons
      @Dev-lessons  2 года назад +1

      Вот это скорей всего