Конструкция WITH в языке SQL

С помощью конструкции WITH мы можем один раз динамически (то есть "на лету") сформировать таблицу данных до выполнения основной команды SELECT и потом уже в основной команде обращаться к динамически подготовленной таблице несколько раз.
Мои курсы: prime-soft.biz/courses
Телеграм-канал с разными SQL-задачами: t.me/sql_oracle_databases
#SQL #уроки #with #примеры

Пікірлер: 76

  • @worlzpnz
    @worlzpnz2 жыл бұрын

    Доступно и информативно изложен материал! У Вас самые лучшие уроки!

  • @PrimeSoft

    @PrimeSoft

    2 жыл бұрын

    Здравствуйте, Екатерина! Спасибо Вам большое за внимание и комментарий!

  • @user-dz6et7mf6l
    @user-dz6et7mf6l2 жыл бұрын

    Спасибо, крутейшее видео!!!!!! Читал несколько статей на тему использования 'WITH', смотрел несколько видео - ничего не понял)) А у Вас с первого раза всё понял! Нашел задачку на использование 'WITH' и используя знания полученные в этом видео решил её самостоятельно решил за 5 минут😀

  • @PrimeSoft

    @PrimeSoft

    2 жыл бұрын

    Здравствуйте, Михаил, спасибо Вам большое за такой мощный комментарий! Очень приятно! Буду стараться ещё:)

  • @chupachups6546
    @chupachups65462 жыл бұрын

    Илья как всегда - на высшем уровне👍 Не описать чувство благодарности Вам!

  • @user-mu4ck6wx6w
    @user-mu4ck6wx6w2 жыл бұрын

    Отличный урок, Илья! Всё понятно. Большое спасибо!

  • @irinasayma9013
    @irinasayma9013 Жыл бұрын

    Ну наконец-то я поняла про with. У вас самое понятное объяснение

  • @user-xf4nz4es5q
    @user-xf4nz4es5q Жыл бұрын

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

  • @tz389
    @tz3892 жыл бұрын

    Как всегда лайк, очень доступно объясняете. Спасибо.

  • @bauyrzhannurimbetov6330
    @bauyrzhannurimbetov63305 ай бұрын

    Илья спасибо за урок. Все просто и наглядно объяснили!

  • @serious_psychologist
    @serious_psychologist9 ай бұрын

    было мегапонятно!! спасибо большое, пришел сюда из документации Postgresql ) где ничего не понял. Спасибо что Вы есть.

  • @c3akidonamy-pubg
    @c3akidonamy-pubg3 ай бұрын

    Ели нашёл достаточно информации на русском, надеюсь в sqlite работает аналогично, побежал тестить!) спасибо

  • @eb6006
    @eb6006 Жыл бұрын

    Спасибо! Много нового узнал! Объяснено очень доходчиво

  • @user-om8co2tp3t
    @user-om8co2tp3t2 жыл бұрын

    Спасибо, WITH полезный прием) Скоро придем к вам на курс

  • @Sannikov.a.a
    @Sannikov.a.a2 жыл бұрын

    Как всегда, хорошая и уверенная подача материала Спасибо за ваши уроки :)

  • @PrimeSoft

    @PrimeSoft

    2 жыл бұрын

    Спасибо Вам, Артём!

  • @nataliaistomina2454
    @nataliaistomina2454 Жыл бұрын

    омг, ты, меня спас)! отличный гайд.

  • @PrimeSoft

    @PrimeSoft

    Жыл бұрын

    Спасибо! Очень приятно слышать!

  • @user-gm3no3my8p
    @user-gm3no3my8p2 жыл бұрын

    Все отлично понятно. Хотя я это уже знал, но было приятно посмотреть. 👍

  • @_vukivur2164
    @_vukivur2164 Жыл бұрын

    Все понятно! Суппер, спасибо, Илья)

  • @vaniL_57
    @vaniL_572 жыл бұрын

    Илья, спасибо, хорошее объяснение

  • @user-xx9cf5cd3b
    @user-xx9cf5cd3b10 ай бұрын

    Отличные туториалы, все понятно и наглядно показано

  • @PrimeSoft

    @PrimeSoft

    10 ай бұрын

    Спасибо Вам! Очень приятно!

  • @user-zb3ec1bq2b
    @user-zb3ec1bq2b7 ай бұрын

    классно рассказал, подробно и понятно, спасибо большое

  • @justice3171
    @justice31712 жыл бұрын

    Спасибо за информативно видео

  • @PrimeSoft

    @PrimeSoft

    2 жыл бұрын

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

  • @andrei1996
    @andrei1996 Жыл бұрын

    Спасибо, объяснено все доходчиво

  • @user-dt9nn6ri9s
    @user-dt9nn6ri9s Жыл бұрын

    молодец , давай еще видео по sql . жду с нетерпением

  • @konstantin3826
    @konstantin38262 жыл бұрын

    Спасибо за еще один хороший урок!

  • @PrimeSoft

    @PrimeSoft

    2 жыл бұрын

    Здравствуйте, Константин! Спасибо Вам большое за внимание! Спасибо, что нашли время написать комментарий. Очень приятно!

  • @mrsarlberg7285
    @mrsarlberg7285 Жыл бұрын

    спасибо! доходчиво объяснили👍

  • @user-eb1qm7ho8h
    @user-eb1qm7ho8h6 ай бұрын

    спасибо большое! теперь мне стало все предельно понятно)

  • @user-uu3vh9po8p
    @user-uu3vh9po8p2 жыл бұрын

    Прекрасно, спасибо!)

  • @vadimkorontsevich1066
    @vadimkorontsevich1066 Жыл бұрын

    Если нужно узнать как работает WITH, смотрите сразу с 9:20

  • @user-mp3hg9pt8h
    @user-mp3hg9pt8h8 ай бұрын

    Полезно, спасибо !

  • @user-op2bw3vt1p
    @user-op2bw3vt1p5 ай бұрын

    спасибо за видео!

  • @PrimeSoft

    @PrimeSoft

    5 ай бұрын

    Спасибо за внимание! :)

  • @user-eo1hv4fs6n
    @user-eo1hv4fs6n Жыл бұрын

    Хороший лектор - рекомендую.

  • @user-ok8cd8tc9c
    @user-ok8cd8tc9c Жыл бұрын

    Спасибо!

  • @trrt9756
    @trrt9756 Жыл бұрын

    Благодарю за урок приятно слушать, жаль что курс заканчивается

  • @STEPanovMaksim
    @STEPanovMaksim6 ай бұрын

    Спасибо! :)

  • @igorlabusov577
    @igorlabusov5772 жыл бұрын

    как всегда СУПЕР))

  • @PrimeSoft

    @PrimeSoft

    2 жыл бұрын

    Здравствуйте, Игорь! Большое спасибо Вам за внимание!

  • @Coreduo
    @Coreduo Жыл бұрын

    Красавчик

  • @1boxingclub378
    @1boxingclub3782 жыл бұрын

    То что в универах 5 лет объясняют ,тут становится понятным за один урок!

  • @PrimeSoft

    @PrimeSoft

    2 жыл бұрын

    Спасибо Вам большое за такой отзыв!

  • @user-ry8rv2to5o

    @user-ry8rv2to5o

    Жыл бұрын

    Тебе пять лет объясняли что такое with ?) Советую проверить учреждение в котором ты находился;)

  • @1boxingclub378

    @1boxingclub378

    Жыл бұрын

    @@user-ry8rv2to5o А его и проверять не надо. Уже и так самый х...вуз на юге рф стал))

  • @rayman4x4
    @rayman4x4 Жыл бұрын

    В данном случае t - это обычный подзапрос. Подозреваю, что WITH используется в более сложных запросах, где такой подзапрос выполняется многократно. И придумано это было для повышения производительности таких запросов. Подзапрос с WITH вычисляется только один раз, кэшируется, и большой запрос выполняется быстрее. Потому что не приходится получать результирующую выборку подзапроса каждый раз при обращении к ней.

  • @akss9245

    @akss9245

    10 ай бұрын

    Значит при обновлении основной таблицы t не перевычисляется? В t будут старые данные?

  • @rayman4x4

    @rayman4x4

    10 ай бұрын

    @@akss9245 зависит от БД. В Оракле будут данные на момент чтения, даже если сразу после выполнения селекта, который длится какое-то время, они изменились. В SQL Server зависит от того, как она настроена. Грубо говоря, мешают ли читатели писателям и наоборот. Если мешают, то никто их не изменит, пока не закончится селект. Надо смотреть уровни изолированности транзакций.

  • @akss9245

    @akss9245

    10 ай бұрын

    @@rayman4x4 спасибо!

  • @user-yg5zf7qh1q
    @user-yg5zf7qh1q2 жыл бұрын

    Спасибо. Очень интересно. Хотел бы послушать хороший разбор про JOIN и ORDER BY, а то везде такая мелкая выжимка, как это работает.

  • @badoboroten1206
    @badoboroten1206 Жыл бұрын

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

  • @fradbredway2665
    @fradbredway26652 жыл бұрын

    Добрый! Спасибо за труд! Вопрос такой если в запросе grup by сделать ещё и сортировку по сумме, а в последнем условии сумма=(select сумма from rownum

  • @ic3shot_

    @ic3shot_

    2 жыл бұрын

    нет

  • @drakula_6175
    @drakula_61752 жыл бұрын

    Можете сделать видео на тему перебора строк в Select? Бывает, что нужно вывести строки с определенными преобразованиями и условиями и приходится перебирать всё через While с использованием Offset fetch rows only(Пропуск строк)

  • @dias9707
    @dias9707 Жыл бұрын

    можно же ORDER BY desc использовать или внутренний запрос на макс зарплату

  • @user-ns9yz4dw6j
    @user-ns9yz4dw6j Жыл бұрын

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

  • @oqykz
    @oqykzАй бұрын

    надо было наглядно показать два кейса: с with и без. так не успел понять что выиграю если буду юзать

  • @PrimeSoft

    @PrimeSoft

    Ай бұрын

    Добрый день! Приходите, пожалуйста, к нам на курс по SQL. Все постарался рассказать наглядно и подробно: prime-soft.biz/courses/sql

  • @user-fh9oz4gt9l
    @user-fh9oz4gt9lАй бұрын

    в чем преимущества With?!? можно таким же образом использовать подзапрос

  • @kekand0s141
    @kekand0s1412 жыл бұрын

    почему нельзя было в конец запроса поставить букву t, далее навернуть select и так же обращаться например select t.name from(прошлый запрос)

  • @kekand0s141

    @kekand0s141

    2 жыл бұрын

    или select t.* from(прошлый запрос)

  • @PrimeSoft

    @PrimeSoft

    2 жыл бұрын

    Здравствуйте! Тогда бы нам пришлось ещё раз писать тот же запрос в подзапросе (select max()...(прошлый запрос)). То есть один и тот же селект писали бы два раза.

  • @HillClimbWorld
    @HillClimbWorld Жыл бұрын

    Чем отличается with от create view?

  • @EdwardNorthwind

    @EdwardNorthwind

    Жыл бұрын

    with это временная про именованная таблица, она не будет храниться вечно, а просто кешируется для многократного обращения. А view это постоянное представление.

  • @HillClimbWorld

    @HillClimbWorld

    Жыл бұрын

    @@EdwardNorthwind спасибо за разъяснение

  • @virtualvortex3146
    @virtualvortex3146 Жыл бұрын

    А нельзя было составить такую конструкцию? WITH t AS( ........) SELECT MAX( SUM_PAYMENTS ) FROM t . Мне кажется так было бы немного проще.

  • @PrimeSoft

    @PrimeSoft

    Жыл бұрын

    Здравствуйте! Тогда бы мы знали только стоимость самого дорогого блюда, но на знали бы его названия.

  • @virtualvortex3146

    @virtualvortex3146

    Жыл бұрын

    @@PrimeSoft понятно, дякую!

  • @xenaio
    @xenaio2 жыл бұрын

    Много положительного уже сказано, но хотелось бы внести немного критики: 1. Чувствуется, что не хватает сценария. План явно есть, а вот подобрать слова "на лету" не получается. В результате много самоповторов и лишних ответвлений от темы. 2. По большому счёту 14 минут видео можно было уложить в минут 5-7, которые свелись бы к примерно следующему сценарию: - Всем привет, меня зовут _______, я являюсь ведущим разработчиком Oracle SQL в компании Prime Soft и рад приветствовать вас на нашем канале. Сегодня я расскажу вам про конструкцию WITH и как оптимизировать запросы к СУБД для ускорения работы вашего ПО. - Описание вашей задачи ("У нас есть таблица с начислениями, нужно получить сотрудников, которые получили максимальные начисления за период") - Как работает неоптимизированный запрос (я так понимаю, он предполагает вложенные запросы) и почему он является неоптимизированным (запрос дважды бегает в базу, что занимает время) - Как улучшить запрос (создать виртуальную таблицу t.* в оперативной памяти и бегать в неё, потому что она в быстром доступе и содержит меньше количество строк, поэтому её быстрее обрабатывать) - Надеюсь, вам понравилось. Кстати, наша компания занимается тем-то тем-то тем-то (если предполагает, что вас могут смотреть потенциальные клиенты-программисты, которым лень разбираться и проще нанять аутсорс под задачу), а также в описании вы можете найти ссылку на страницу вакансий, возможно, вам будет с нами интересно (если у вас есть вакансии). Всё, вот всё видео. 3. Зачем было показывать вариант с введением числа? 11:21 Это же прямое нарушение ТЗ "Определить сотрудников с максимальными выплатами за период". Признаться, чуть не закрыл в этот момент видео, решив, что на этом всё закончится. Показывать неправильно нужно только тогда, когда неправильный вариант кажется логичным решением, но имеет под собой какие-то минусы. А это - просто зря потраченные 2 минуты видео. 4. Звук. Звук очень тихий и очень высокий. И это не проблема голоса, это проблема микрофона и постобработки. Посмотрите среднестатистическое видео на ютубе и поймёте, какой уровень звука должен быть, чтобы ради просмотра вашего видео зрителю не приходилось крутить громкость. 5. Идея с вебкой отличная, но поскольку вы ничего гениального не показываете на неё, её можно сделать меньше, тогда не придётся её теребонькать по всему экрану, чтобы она ничего не загораживала. 6. Для справки: функция to_date есть в Oracle SQL (судя по тому, что я нашел), но, например, в MySQL её нет. А большинство среднестатистических зрителей подобного контента будут работать как раз либо с ним, либо с PostgreSQL. Учитывайте диалекты SQL и обязательно указывайте везде, где возможно, с каким диалектом работаете именно вы. А в идеале указывайте, какие функции делают то же самое в популярных диалектах, если там есть отличия. Кстати, информацию о ПО, СУБД и т.д. можно размещать в описании или в закрепленном комментарии. 7. 6:36 очень полезное уточнение, не спорю. Но во-первых, зачем вы группируете по ID и по ФИО? Сами же говорите, что эти поля всегда будут уникальны. А СУБД лишнюю проверку делать нужно. Во-вторых, вы, машущий руками, конечно, неплохая визуализация того, что происходит, но если не полениться и сделать анимацию/снять на видео, как рисуете на листочке/показать в рамках реального запроса - было бы в 100 раз понятнее и заняло бы раз в 5 меньше времени.

  • @Respecti-uv9tq
    @Respecti-uv9tq6 ай бұрын

    Я досмотрел и поставил лайк. Подача отвратительная( Попробуй писать сценарий, проговаривать его. Жду новые видео, удачи

  • @Vadim_igraet
    @Vadim_igraet2 жыл бұрын

    Пока рассказывают, - понятно. Как только начинаешь сам выполнять то чувствуешь себя полным говном 😂

  • @user-vi1hg5ic5d

    @user-vi1hg5ic5d

    Жыл бұрын

    Жиза

  • @user-zb3ec1bq2b
    @user-zb3ec1bq2b7 ай бұрын

    а если сразу написать в конце WHERE t.SUM_PAYMENTS = MAX(t.SUM_PAYMENTS) так не прошло бы?

Келесі