Вопросы по SQL и Базам Данных на интервью - Часть 2
HTML-код
- Опубликовано: 21 сен 2024
- Выбираем самые популярные - всего и по определенной группе.
Видео про связи: Многие ко многим
• Базы данных - Связь мн...
Обо мне: www.flenov.ru
Мой ИТ блог www.flenov.ru и www.flenov.info
Мой просто блог blo.moe
Tweeter: / flenov
Инстаграмм: / mflenov
Телеграмм: t.me/mflenov
Поддержать меня на Бусти и получить доступ к доп контенту: boosty.to/mflenov
Обо мне: www.flenov.ru
Мой ИТ блог www.flenov.info
Телеграм: t.me/mflenov
Twitter: twitter.com/flenov
Инстаграм: instagram.com/mflenov/
Мой просто блог blo.moe
Прикольно, что (судя по комментам к этому видео и не только) такие видео смотрят в основном те, кто уже знает это, а не те, кто хочет научиться.
Знающие люди даже на собеседованиях могут предложить какой-то уникальный способ решения задачи, который никому ранее не приходил в голову.
Спасибо за видео!
К счастью, только в основном, а не в только знающие)
Отличные материалы, отличный автор ;) Как всегда - приятно слушать ;)
Спасибо
вообще топ задачка, как раз что-то новое узнал, спасибо большое
ORDER BY в целом в любом SQL надо отправлять на самый верхний уровень :) . За оконные функции отдельное уважение. Не все их уважают в век ORM(Привет Django).
вот здесь уже интереснее, спасибо. единственное, про partition как будто пояснение напрашивалось что это и для чего. один раз сталкивался, коллега помог оптимизировать запрос один тяжелый, оптимизация дала прирост просто тысячекратный, вот так вот
Первое что приходит на ум, Discount - это процент скидки и поэтому тип данных real ), тогда Формула выглядеть должна так: UnitPrice * Quantity * (1 - Discount)
Возможно
Отличные видеоуроки, спасибо за контент, молодец
Большое спасибо за видео, было познавательно
Microsoft Bing до сих пор проигрывает Google по всем статьям и его пытаются пользователям впихивать с браузером Edge
по поводу именования таблиц, не знаю на сколько это является стандртом в сообщество но я придерживаюсь соглашений из style guide по sql
"Используйте собирательные имена или, что менее предпочтительно, форму множественного числа. Например, staff и employees (в порядке убывания предпочтения)."
блин ссылку удаляет вот короче: www sqlstyle guide
Спасибо за задачки. Решил быстро. Но, кажется мне, на собесе на позицию sql dev будут задавать что-то посложнее. Надо бы повторить рекусивные запросы, анализ деревьев, автозаполнение диапазонов данных, пивоты, анализ и сборку xml/json, ну и внутрянку субд: кучи, индексы такие-сякие, пейджинг, алгоритмы выгрузки страниц итп
Использовать GROUP BY в подзапросе...
А я всё время в табличкую переменную засовывал и её джойнил. Хотя подзапросы тоже использую, но конкретно для такой ситуации - никогда (в основном, in). Жесть. Спасибо... Это гораздо быстрее.
Если это самые сложные вопросы по sql, то я профессор в этой области )
Это самые сложные, что меня спрашивали, в Канаде самые простые интервью, которые мне приходилось проходить
Спасибо большое!
А у меня спросили про Data Vault и Якорную модель проектирования БД)
Это вообще трэш
Дискаунт - это процент скидки. Не вычитать надо, а умножать.
Возможно процент.
А что произойдет, если умножить?
@@Dev-lessons По идее нужно Sum((UnitPrice * (1 - cast(Discount as Money)))* Quantity)
Был на проекте по переводу подсистемы отчетности (простая выгрузка из БД в Эксель) с MS SQL на постгрес, вся бизнес-логика отчетов была в SQL скриптах)) с курсорами, временными таблицами и пр.
А бывало что бизнес-логика некоторых отчетов была и в SQL запросе, и в бэке))) треш
Я так понимаю, что треш указывает на то, что ты не очень счастлив был такой архитектуре...
@@Dev-lessons дебажить было очень трудно) все-таки бд должна отдавать сет данных, а построение отчётов лучше делать на бэке
@@Mr43046721 Да, это точно будет проблемой
12:00 а разве discount Это не процент скидки типа total = (price * (1-discount) * quantity)
Может быть. Но я решил показать именно эту сторону чисел
11:56 - Думал проверка синтаксиса ругнется на несуществующий алиас cnt, но почему-то нет.
Если бы я выполнил, то скорей всего была бы проблема, а так студия не всегда хорошо видит имена полей, которые возвращают подзапросы, поэтому могут быть проблемы
А было видео про рекурсивные запросы?
Во время интервью ни разу не давали подобных вопросов, но видео подобного плана действительно можно записать на канал, сделал пометку
@@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
Упс, мой комментарий удален. Вопрос такой, почему бизнес логика не должна хранится в БД(хранимые процедуры, функции)?
Я не удаляю вопросы, но уже не первый раз слышу про пропадающие комментарии, возможно какие-то фильтры RUclips.
По поводу логики в базе данных - ее потом сложно сопровождать, возникают проблемы с версиями и обновлениями без простоя приложения. Я об этом немного говорил в www.flenov.info/plus/content/Большие_сайты_-_Книга но думаю нужно записать полноценный видос на эту тему
@@Dev-lessons ждем развернутый ответ-видео. Да, во многих местах читаю, мнения разделяются, спорный вопрос. Особенно хотелось бы узнать Entity Framework или Stored Procedures в банковской среде, где требуется моментальных операций.
Могу отметить, что в компании где я работаю (в сфере логистики), бизнес логика практически полностью на sql, но не могу сказать что это хорошо и красиво смотрится везде..
@@hentan4912 Вопрос не в том, что хорошо или плохо смотрится, просто здесь есть плюсы и минусы и минусы очень даже серьезные
@@Dev-lessons ну будем ждать развёрнутой позиции по этому вопросу. Минусы с моей точки зрения это функциональность и декларативность самого языка, который в принципе не особенно предназначен для создания глобального продукта, а плюсы это маленькие накладные расходы. Это один из самых быстрых способов, чтобы ворочались большие данные
Здравствуйте. А почему не воспользовались LIMIT n OVER?
LIMIT это же из MySQL.
Первый!!!
sql-academy - зе бест
Здравствуйте, есть комментарий по поводу поля Discount. Думаю что оно спецом сделано real потому как это скидка и ее надо вычитать не напрямую, а вот так: SUM((o.UnitPrice - o.UnitPrice*(cast(o.Discount as money)))*o.Quantity)
Ну в этом примере ты кастишь, а если бы скидка хранилась в money, то кастить не пришлось бы.
@@Dev-lessons может разработчики так хотели намекнуть что это проценты скидки?
Вот это скорей всего