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