powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оконные и аналитические функции. Практическое применение
38 сообщений из 38, показаны все 2 страниц
Оконные и аналитические функции. Практическое применение
    #40137038
IgorShr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет
самостоятельно разбираюсь с темой, но вот пока не могу ответить на вопрос практического применения этих функций.
Пока сложилось впечатление, что примеры мягко говоря притянуты за уши. То есть скорее для демонстрации , а не для задач в жизни.
Кто сталкивался с оправданным применением?
Как выглядят реальные задачи в которых эффективно применение сабж?
Кто заказчик, в интересах которого используются? Особенно для аналитических функций (PERCENT_RANK, CUME_DIST, PERCENTILE_CONTи PERCENTILE_DISC);
Может прикопан ресурс , где на примере станет понятен профит ?

Спасибо.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137056
Master_Detail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Покажите хорошие варианты, которые бы делали то, что делают, к примеру, rank или dense_rank, но без них. И чтобы коротко и лаконично :)
Или, к примеру, first_value/last_value внутри окна и с сортировкой
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137060
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorShr
Может прикопан ресурс , где на примере станет понятен профит ?
Любой ресурс по ораклу - sql.ru, SO, официальный оракловый форум и т. д. Берете название любой функции, вводите его в поисковую строку (на SO - "oracle <название функции>"), и изучаете результаты. Только серьезно изучаете, а не так, что открыл вопрос, глянул по диагонали, закрыл, "да ну фигня" и пошел дальше. Открываете 2 - 3 десятка вопросов, читаете вопрос, пробуете дать свой ответ, потом сравниваете с ответами других. Рано или поздно поймете.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137061
Asmodeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorShr
Всем привет
самостоятельно разбираюсь с темой, но вот пока не могу ответить на вопрос практического применения этих функций.
Пока сложилось впечатление, что примеры мягко говоря притянуты за уши. То есть скорее для демонстрации , а не для задач в жизни.
Кто сталкивался с оправданным применением?
Как выглядят реальные задачи в которых эффективно применение сабж?
Кто заказчик, в интересах которого используются? Особенно для аналитических функций (PERCENT_RANK, CUME_DIST, PERCENTILE_CONTи PERCENTILE_DISC);
Может прикопан ресурс , где на примере станет понятен профит ?

Спасибо.
Собственно, все задачи, которые требуют наравне с самими данными иметь и некоторую дополнительную информацию по поднаборам (подитоги, промежуточные вычисления), доступ к строкам до/после текущей строки (LEAD/LAG), получение первых/последних значений в подгруппах (FIRST_VALUE/LAST_VALUE). В общем основная цель - отчетно-аналитическая, как и следует из названия функций. Изредка применяется при т.н. паджинации (постраничном выводе информации), особенно когда итоговая сортировка набора не совпадает с условиями формирования страниц.

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

Да, не все функции одинаково широко применимы, как приведенные вами, но есть ситуации, когда и они нужны, например, при решении о премировании . Попробуйте решить эти задачи без аналитических функций и сравните получившийся код.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137067
IgorShr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Asmodeus
IgorShr
Всем привет
самостоятельно разбираюсь с темой, но вот пока не могу ответить на вопрос практического применения этих функций.
Пока сложилось впечатление, что примеры мягко говоря притянуты за уши. То есть скорее для демонстрации , а не для задач в жизни.
Кто сталкивался с оправданным применением?
Как выглядят реальные задачи в которых эффективно применение сабж?
Кто заказчик, в интересах которого используются? Особенно для аналитических функций (PERCENT_RANK, CUME_DIST, PERCENTILE_CONTи PERCENTILE_DISC);
Может прикопан ресурс , где на примере станет понятен профит ?

Спасибо.
Собственно, все задачи, которые требуют наравне с самими данными иметь и некоторую дополнительную информацию по поднаборам (подитоги, промежуточные вычисления), доступ к строкам до/после текущей строки (LEAD/LAG), получение первых/последних значений в подгруппах (FIRST_VALUE/LAST_VALUE). В общем основная цель - отчетно-аналитическая, как и следует из названия функций. Изредка применяется при т.н. паджинации (постраничном выводе информации), особенно когда итоговая сортировка набора не совпадает с условиями формирования страниц.

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

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


Спасибо
Я не отрицаю удобства и оптимальности функций
Но пробую найти кто же заказчик похожей аналитики в повседневной жизни
PS
двум предыдущим авторам и ответить то нечего, тем более поблагодарить
Спросил одно, ответили на другое.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137068
Asmodeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorShr
Спасибо
Я не отрицаю удобства и оптимальности функций
Но пробую найти кто же заказчик похожей аналитики в повседневной жизни
Вот именно в такой постановке - вряд ли найдете за пределами учебника. Ибо "заказчику" чаще всего безразлично, как именно разработчик решил задачу. Может быть интересно администраторам, т.к. они контролируют использование ресурсов и их - ресурсов, - перерасход мало кому нравится. Аналитические функции - это инструмент, и пользоваться (или не пользоваться) инструментом - дело разработчика.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137069
Master_Detail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorShr

двум предыдущим авторам и ответить то нечего, тем более поблагодарить
Спросил одно, ответили на другое.

Дело все в том, что пока вы не понимаете, как странно звучит ваш вопрос:

IgorShr

Кто сталкивался с оправданным применением?


Но со временем, как осознаете, окажется, что предыдущие два автора сказали не бесполезные вещи. И есть еще одна очевидная вещь - учиться дома на примерчиках крайне сложно, так как вы и придумать задачку реальную не можете. Не потому что проблема в вас, а потому, что пока не имеете практики. Так создайте себе практику. Вот вам задачка - возьмите план счетов, загрузите его в таблицу и попробуйте пронумеровать эти счета внутри одной главы, одной группы счетов (4 знака). А после перепишите все это подзапросами. Сравните результат, осознайте.

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

P.S. При прочтении задачки выше может возникнуть вопрос - почему мне этот предыдущий автор пишет про какую-то непонятную бухг.кухню, я вообще-то SQL учу. Это будет еще одним открытием, возможно. Но позже
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137074
IgorShr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Master_Detail
IgorShr

двум предыдущим авторам и ответить то нечего, тем более поблагодарить
Спросил одно, ответили на другое.

Дело все в том, что пока вы не понимаете, как странно звучит ваш вопрос:

IgorShr

Кто сталкивался с оправданным применением?


Но со временем, как осознаете, окажется, что предыдущие два автора сказали не бесполезные вещи. И есть еще одна очевидная вещь - учиться дома на примерчиках крайне сложно, так как вы и придумать задачку реальную не можете. Не потому что проблема в вас, а потому, что пока не имеете практики. Так создайте себе практику. Вот вам задачка - возьмите план счетов, загрузите его в таблицу и попробуйте пронумеровать эти счета внутри одной главы, одной группы счетов (4 знака). А после перепишите все это подзапросами. Сравните результат, осознайте.

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

P.S. При прочтении задачки выше может возникнуть вопрос - почему мне этот предыдущий автор пишет про какую-то непонятную бухг.кухню, я вообще-то SQL учу. Это будет еще одним открытием, возможно. Но позже


ну так вот вопрос то ключевой так и звучал
Как сформулированы реальные задачи , которые бы эффективно решались с помощью функций?
а то что на абстрактных примерах учиться это не более чем просто понять механизм работы, это и так озвучил.
Из предложенной задачи понятно все, кроме ответа на вопрос : кому то в реальной жизни такой отчет действительно нужен?
Ну и еще , уже более расширенный вопрос.
из более продвинутых примеров упоминается например "Моделирование атрибуции"
Кто в реальной жизни с таким столкнулся? Моего уровня знаний в этой теме недостаточно, поэтому напрашивается вариант :
или поднимать знания на уровень классической аналитики или надеяться что перед разработчиком еще есть две ступени: бизнес и системный аналитик, которые из задачи бизнеса сформулируют ТЗ для разработчика, где будут уже более приземленные термины, нежели "Моделирование атрибуции
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137077
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorShr
Спросил одно, ответили на другое.
Вы спросили про практическое применение. Я сказал, где можно найти примеры практического применения. Люди приходят с конкретными практическими вопросами сюда, на SO, и на любые другие оракловые ресурсы. А им дают практические ответы - с функциями. Я ведь вас предупреждал, что последовательность действий
Никанор Кузьмич
открыл вопрос, глянул по диагонали, закрыл, "да ну фигня" и пошел дальше
- плохой способ учиться. А вы вдобавок решили первые два пункта пропустить и перейти сразу к "да ну фигня". Ну, что, удачи в освоении.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137079
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorShr
Как сформулированы реальные задачи , которые бы эффективно решались с помощью функций?
Ваш вопрос эквивалентен вопросу "Как сформулированы реальные задачи, в которых необходимо писать ручкой на бумаге".
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137080
Asmodeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorShr
ну так вот вопрос то ключевой так и звучал
Как сформулированы реальные задачи , которые бы эффективно решались с помощью функций?

Жила-была система.
И торговали в этой системе полотово. И попросил Заказчик выводить по 50 лотов на экран за раз. Сделал это Разработчик, ибо не сложно было.

Посмотрел Заказчик, и говорит: "А хорошо бы еще Клиентам показывать общее число лотов."
"Чего уж проще" - подумал Разработчик. Первым запросом получаем общее число лотов, вторым - собственно лоты. Вроде все красиво: вот поле с количеством лотов, вот - табличка с лотами. Поблагодарил Заказчик за быстрое исполнение его желания.

Но торговали в системе интенсивно, и начали Клиенты жаловаться: "А почему общее количество лотов - 42, а у меня на экране только 37? Вы мне не все показываете?! Это не честно!" Прибежал разгневанный Заказчик к Разработчику: "Почему?!"
"Почему-почему..." - подумал Разработчик. "По SCN'у!" Но Заказчик этого не узнал, потому что Разработчик был очень воспитанный.

И взял Разработчик аналитический count, и стало вместо двух запросов - один, а число в поле с общим количеством лотов стало совпадать с числом строк в таблице (если их меньше размера страницы, конечно же). И успокоились Клиенты, извинившись за свои подозрения, и улыбка вернулась на лицо Заказчика, и спокойствие воцарилось в его душе.

Тут и сказочке конец. Счастливый. На некоторое время.

Прошу прощения за форму.

IgorShr
а то что на абстрактных примерах учиться это не более чем просто понять механизм работы, это и так озвучил.
Из предложенной задачи понятно все, кроме ответа на вопрос : кому то в реальной жизни такой отчет действительно нужен?
Ну и еще , уже более расширенный вопрос.
из более продвинутых примеров упоминается например "Моделирование атрибуции"
Кто в реальной жизни с таким столкнулся? Моего уровня знаний в этой теме недостаточно, поэтому напрашивается вариант :
или поднимать знания на уровень классической аналитики или надеяться что перед разработчиком еще есть две ступени: бизнес и системный аналитик, которые из задачи бизнеса сформулируют ТЗ для разработчика, где будут уже более приземленные термины, нежели "Моделирование атрибуции
Вряд ли. Ни системные, не бизнес аналитики не указывают разработчику, каким инструментом пользоваться (чаще всего - не знают: не их область), максимум - транслируют перечень технологий, в которых надо придется работать.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137083
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorShr
Как сформулированы реальные задачи , которые бы эффективно решались с помощью функций?
Т.е. Вы не знаете применение оконных функций.
А может Вам это и не надо ?
Решайте задачи циклами. Ведь никто не против.
А вот когда увидите, что циклами или другими вашими методами получается долго, на множестве записей.
То придете сюда и поставите правильно свою задачу с примерами. И тогда тут могут помочь.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137088
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СА
IgorShr
Как сформулированы реальные задачи , которые бы эффективно решались с помощью функций?
Т.е. Вы не знаете применение оконных функций.
А может Вам это и не надо ?
Решайте задачи циклами. Ведь никто не против.
А вот когда увидите, что циклами или другими вашими методами получается долго, на множестве записей.
То придете сюда и поставите правильно свою задачу с примерами. И тогда тут могут помочь.

Дельное предложение.

"Оконные функции" - это не только не панацея от всех бед,
но и возможный источник новых неожиданных проблем.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137090
IgorShr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никанор Кузьмич
IgorShr
Как сформулированы реальные задачи , которые бы эффективно решались с помощью функций?
Ваш вопрос эквивалентен вопросу "Как сформулированы реальные задачи, в которых необходимо писать ручкой на бумаге".

А чем плох вопрос ? На фоне современного мира, когда можно использовать электронное способы формирования и хранения информации?
Вот тут , уважающий себя читатель , ответит приблизительно так: есть области, которые не приняли деюро электронный документооборт, и вот в этих случаях необходимо использовать бумагу и ручку.
Вот если внимательно вчитаться в вопрос, то там нет скрытого " на хрена эти функции, когда можно сделать циклами"
Там если расширить то так: расскажите плиз про задачи от экономистов( маркетологов, продажников etc ), решив которые элегантно с помощью оконных и аналитических функций , вы вызываете у них неописуемый восторг , который в практическом эквиваленте позволяет: экономисту сократить свой ручной труд в столько то раз, маркетологу понять какую рекламную модель использовать и тд
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137093
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorShr, а нарастающий итог ч-з коррелированный подзапрос щетать будишь?
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137095
IgorShr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mnbvcx
IgorShr, а нарастающий итог ч-з коррелированный подзапрос щетать будишь?

ну нет конечно же!
Я очень обрадовался когда прочитал про возможность нарастающего итога
И очень опечалился когда не смог найти ему практическое применение, кроме как "вот хочу этот итог видеть и все тут!"
Ну то есть, если мне такую задачу поставят , я ее решу как раз с помощью функционала окон.
Но при этом из любопытства и для собственного развития задам вопрос заказчику "Чувак, а расскажи, практическую пользу от того , что у тебя появится поле нарастающего итога"
И тут, как и на этом форуме, возможны разные варианты ответов
Например, "Дуд! Как! Ты не знаешь зачем используется нарастающий итог в зарплатной ведомости? Ну ты дуб и дерево. А еще разработчик"
Ну или вдруг, что весьма нехарактерно для этого форума, за редким исключением, спокойное объяснение того, как этот нарастающий итог позволяет принять ему взвешенное управленческое или операционное решение
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137099
Asmodeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorShr
как этот нарастающий итог позволяет принять ему взвешенное управленческое или операционное решение
Например, увидеть, что человек по зарплате перешел в другой налоговый класс (при прогрессивной шкале налогообложения), или проверить лимиты снятия наличных в день.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137102
IgorShr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Asmodeus
IgorShr
как этот нарастающий итог позволяет принять ему взвешенное управленческое или операционное решение
Например, увидеть, что человек по зарплате перешел в другой налоговый класс (при прогрессивной шкале налогообложения), или проверить лимиты снятия наличных в день.

Йоу!
Точно!
Прям луч света !
Спасиб, бро!
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137158
Master_Detail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorShr

Прям луч света !


Вы просто отработайте все основные аналитические функции, освойте окна, где не только partition by. Запомните +- как оно работает и, поверьте, будет задачка на реальной работе, когда придет прозрение - о, я ведь когда-то это читал/пробовал. Но помните, что есть путь и проще...

Никанор Кузьмич
"да ну фигня" и пошел дальше
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137161
IgorShr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Master_Detail,

Ага.
я бы чё еще хотел сказать
как минимум у одного человека в этой ветке, есть уникальная способность
он реально сможет доступным и понятным языком описать что можно сделать с помощью ручки и бумаги.
Причем сделать это так, что и инопланетянину будет понятно.
Не корявым " ну ты сможешь че нить написать или нарисовать"
и не используя при этом способ : ты это...начнешь что нибудь с помощью ручки и бумаги делать потихоньку, озарение само придет
Спасибо, что еще есть такие люди.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137183
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorShr
mnbvcx
IgorShr, а нарастающий итог ч-з коррелированный подзапрос щетать будишь?

ну нет конечно же!
Я очень обрадовался когда прочитал про возможность нарастающего итога
И очень опечалился когда не смог найти ему практическое применение, кроме как "вот хочу этот итог видеть и все тут!"
Ну то есть, если мне такую задачу поставят , я ее решу как раз с помощью функционала окон.
Но при этом из любопытства и для собственного развития задам вопрос заказчику "Чувак, а расскажи, практическую пользу от того , что у тебя появится поле нарастающего итога"
И тут, как и на этом форуме, возможны разные варианты ответов
Например, "Дуд! Как! Ты не знаешь зачем используется нарастающий итог в зарплатной ведомости? Ну ты дуб и дерево. А еще разработчик"
Ну или вдруг, что весьма нехарактерно для этого форума, за редким исключением, спокойное объяснение того, как этот нарастающий итог позволяет принять ему взвешенное управленческое или операционное решение

Это тупо нужно щетать, и пох как - в sql 2008 дешевой версии я нарастающий итог ч-з подзапрос считал.
Нопремер, ращет средневзвешенной цены актива по ФИФО. ЦБ вменяет именно по ФИФО считать.
Сейчас, видимо, это не очень актуально, но раньше инвест-компании, которые являются налоговым агентом, это делали.
ЗЫ Оно, теоретически, и сейчас актуально, но по-факту с брокерских щетов хер ты чего от российских брокеров выведешь.
ЗЗЫ Можно и на щётах считать, чё бы и нет.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137184
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mnbvcx
IgorShr
пропущено...

ну нет конечно же!
Я очень обрадовался когда прочитал про возможность нарастающего итога
И очень опечалился когда не смог найти ему практическое применение, кроме как "вот хочу этот итог видеть и все тут!"
Ну то есть, если мне такую задачу поставят , я ее решу как раз с помощью функционала окон.
Но при этом из любопытства и для собственного развития задам вопрос заказчику "Чувак, а расскажи, практическую пользу от того , что у тебя появится поле нарастающего итога"
И тут, как и на этом форуме, возможны разные варианты ответов
Например, "Дуд! Как! Ты не знаешь зачем используется нарастающий итог в зарплатной ведомости? Ну ты дуб и дерево. А еще разработчик"
Ну или вдруг, что весьма нехарактерно для этого форума, за редким исключением, спокойное объяснение того, как этот нарастающий итог позволяет принять ему взвешенное управленческое или операционное решение

Это тупо нужно щетать, и пох как - в sql 2008 дешевой версии я нарастающий итог ч-з подзапрос считал.
Нопремер, ращет средневзвешенной цены актива по ФИФО. ЦБ вменяет именно по ФИФО считать.
Сейчас, видимо, это не очень актуально, но раньше инвест-компании, которые являются налоговым агентом, это делали.
ЗЫ Оно, теоретически, и сейчас актуально, но по-факту с брокерских щетов хер ты чего от российских брокеров выведешь.
ЗЗЫ Можно и на щётах считать, чё бы и нет.

ЗЗЗЫ ЛИД ЛАГ могут понадобиться, нопремер, для ращета максимальной просрочки за период.
Так-то комрад всё правильно ответил
Никанор Кузьмич
IgorShr
Может прикопан ресурс , где на примере станет понятен профит ?
Любой ресурс по ораклу - sql.ru, SO, официальный оракловый форум и т. д. Берете название любой функции, вводите его в поисковую строку (на SO - "oracle <название функции>"), и изучаете результаты. Только серьезно изучаете, а не так, что открыл вопрос, глянул по диагонали, закрыл, "да ну фигня" и пошел дальше. Открываете 2 - 3 десятка вопросов, читаете вопрос, пробуете дать свой ответ, потом сравниваете с ответами других. Рано или поздно поймете.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137215
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СА
...
Решайте задачи циклами. Ведь никто не против.
А вот когда увидите, что циклами или другими вашими методами получается долго, на множестве записей.
То придете сюда и поставите правильно свою задачу с примерами. И тогда тут могут помочь.

Выглядит как безумное предположение.
Мне не приходилось встречать человека, освоившего "программирование циклами", которому бы после этого
когда-нибудь понадобились аналитические функции.

Я и сам, в существенной степени, именно такой и есть.

🧐
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137259
istrebitel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Смотри к примеру есть лист согласования (грид)
№ п/п ФИО Уровень согласования Резолюция1 Иванов 1 согл2 Петров 13 Сидоров 1 согл4 Алексанрова 25 Петрушев 26 Ген директор 3
Постановка задачи: согласованные позиции выделять зелёным цветом, но если все позиции одного уровня согласованы, то выделить серым весь уровень.
Код: sql
1.
2.
3.
4.
case 
	when count(*) over(partition by lvl) = count(accept) over(partition by lvl) then 'Gray'
	when accept = 1 then 'Green'
end clr


То же применимо к подсветить суммы превышающие определённую долю в группе.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137267
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
Владимир СА
...
Решайте задачи циклами. Ведь никто не против.
А вот когда увидите, что циклами или другими вашими методами получается долго, на множестве записей.
То придете сюда и поставите правильно свою задачу с примерами. И тогда тут могут помочь.

Выглядит как безумное предположение.
Мне не приходилось встречать человека, освоившего "программирование циклами", которому бы после этого
когда-нибудь понадобились аналитические функции.

Я и сам, в существенной степени, именно такой и есть.

🧐
Выглядит как безумное предположение.Не понял, что ты тут хотел сказать ???
Просто есть много методов решения задачи...
Я об этом хотел сказать...

Но чувствуется топикастер не встретил задачи, в которых лучше использовать оконные функции.

Он скорее хочет, чтобы ему рассказали теорию...
А почитать документацию ? Попробовать, и если не получается, то тогда обратиться на форум с предоставлением данных на которых тренировался и запросы, которые использовал.
Я именно так вижу работу форума.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137269
istrebitel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще, всё что связанно с долями отлично считается через аналитику.
Ещё пример, расчёт налога на имущество. Имеется у вас несколько десятков тысяч объектов основных средств, причисленных каждый к своему подразделению. Вы рассчитываете, по определённым формулам, сумму налога на имущество. Но потом эту сумму надо распределить по подразделениям. В бухгалтерских документах суммы до копеек, так что придётся округлять каждую сумму по подразделению. А после этого накопившуюся разницу от округлений закинуть в подразделение с самой большой суммой или распределить среди топ 5 подразделений.
Так вот аналитикой это делается одним запросом.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137272
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
istrebitel
Вообще, всё что связанно с долями отлично считается через аналитику.
Ещё пример, расчёт налога на имущество. Имеется у вас несколько десятков тысяч объектов основных средств, причисленных каждый к своему подразделению. Вы рассчитываете, по определённым формулам, сумму налога на имущество. Но потом эту сумму надо распределить по подразделениям. В бухгалтерских документах суммы до копеек, так что придётся округлять каждую сумму по подразделению. А после этого накопившуюся разницу от округлений закинуть в подразделение с самой большой суммой или распределить среди топ 5 подразделений.
Так вот аналитикой это делается одним запросом.
Хм... я в таких случаях использую оператор WITH...
И получаю конечный результат в той форме, какой нужен пользователю.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137273
istrebitel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lead / lag
Есть у тебя заявка и история статусов по ней.
Дата время Статус03.03.2022 11:15:00 Новая03.03.2022 11:16:00 Принят03.03.2022 11:18:00 В работе03.03.2022 11:19:00 Выполнен03.03.2022 11:24:00 Закрыт

А надо получить
Дата время Статус Продолжительность03.03.2022 11:15:00 Новая 00:01:0003.03.2022 11:16:00 Принят 00:02:0003.03.2022 11:18:00 В работе 00:01:0003.03.2022 11:19:00 Выполнен 00:05:0003.03.2022 11:24:00 Закрыт
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137282
istrebitel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир СА,

Ну в моём случае конечный результат был
Код: sql
1.
2.
insert into DocSpec
select ...


То есть надо сформировать документ в системе.
Реальная жизнь ещё сложнее, налог считается от остаточной стоимости ОС, кто знаком с бух учётом знает, остальным поясню. Остаточная стоимость это первоначальная стоимость - амортизация. Они хранятся на разных счетах бухучёта. А если это здоровенное здание там могут быть несколько подразделений, часть здания может сдаваться в аренду. В течении года у объекта ОС могла быть модернизация меняющая его первоначальную стоимость. Представьте любой здоровенный завод, вот вам надо посчитать всё от шуруповёрта до здания, в разрезе каждого месяца за год. С учётом кучи условий движимое/недвижимое, введено в эксплуатацию до такой то даты или после.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137295
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
istrebitel
Владимир СА,

Ну в моём случае конечный результат был
Код: sql
1.
2.
insert into DocSpec
select ...


То есть надо сформировать документ в системе.
Реальная жизнь ещё сложнее, налог считается от остаточной стоимости ОС, кто знаком с бух учётом знает, остальным поясню. Остаточная стоимость это первоначальная стоимость - амортизация. Они хранятся на разных счетах бухучёта. А если это здоровенное здание там могут быть несколько подразделений, часть здания может сдаваться в аренду. В течении года у объекта ОС могла быть модернизация меняющая его первоначальную стоимость. Представьте любой здоровенный завод, вот вам надо посчитать всё от шуруповёрта до здания, в разрезе каждого месяца за год. С учётом кучи условий движимое/недвижимое, введено в эксплуатацию до такой то даты или после.
Т.е. и ты не знаешь использование оператора WITH...
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137299
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
istrebitel
Владимир СА,

Ну в моём случае конечный результат был
Код: sql
1.
2.
insert into DocSpec
select ...


То есть надо сформировать документ в системе.
Реальная жизнь ещё сложнее, налог считается от остаточной стоимости ОС, кто знаком с бух учётом знает, остальным поясню. Остаточная стоимость это первоначальная стоимость - амортизация. Они хранятся на разных счетах бухучёта. А если это здоровенное здание там могут быть несколько подразделений, часть здания может сдаваться в аренду. В течении года у объекта ОС могла быть модернизация меняющая его первоначальную стоимость. Представьте любой здоровенный завод, вот вам надо посчитать всё от шуруповёрта до здания, в разрезе каждого месяца за год. С учётом кучи условий движимое/недвижимое, введено в эксплуатацию до такой то даты или после.
Оператор WITH очень обобщенный...
Но если просто записать в таблицу:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> create table tab (x number, y number);
Table created.

SQL> insert into tab(x, y)
  2  with v as (
  3     select 1 a, 2 b from dual union all
  4     select 3 a, 4 b from dual
  5  )
  6  select a, b
  7  from v
  8  /
2 rows created.

К чему я... Т.е. если в WITH куча алиасов, то все равно можно сделать запись в таблицу...
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137323
istrebitel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир СА,

Оператор WITH не спасёт тебя от двойного, тройного, пятерного прохождения по одним и тем же данным, а данных много. Да MATERIALIZE чуть облегчит задачу.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137327
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
istrebitel
Владимир СА,

Оператор WITH не спасёт тебя от двойного, тройного, пятерного прохождения по одним и тем же данным, а данных много. Да MATERIALIZE чуть облегчит задачу.
Хм... Значит ПЛОХО составлены запросы.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137332
istrebitel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот где используется нарастающий итог
Дата время Статус Продолжительность Общее время03.03.2022 11:15:00 Новая 00:01:0003.03.2022 11:16:00 Принят 00:02:00 00:01:0003.03.2022 11:18:00 В работе 00:01:00 00:03:0003.03.2022 11:19:00 Выполнен 00:05:00 00:04:0003.03.2022 11:24:00 Закрыт 00:09:00
От подачи заявки до выполнения прошло 4 минуты. Сравнительно легко добавлять логику исключения времени нахождения в статусе Приостановлен.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40137572
IgorShr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот пока у меня складывается впечатление что тема в первую очередь для разовых запросов или блажи или привычки заказчиков, не?
То есть они больше для визуализации. Для движков , которые работают на логику есть смысл их использовать?
ну вот взять те же лимиты которые накапливающимся итогом. В знакомых мне по работе платежных системах лимиты считаются без использования аналитических или оконных функций, да и пороговые и прочие комиссии тоже . А вот какому нибудь плановику тому подай нарастающий итог в разных проекциях.

istrebitel
Вот где используется нарастающий итог
Дата время Статус Продолжительность Общее время03.03.2022 11:15:00 Новая 00:01:0003.03.2022 11:16:00 Принят 00:02:00 00:01:0003.03.2022 11:18:00 В работе 00:01:00 00:03:0003.03.2022 11:19:00 Выполнен 00:05:00 00:04:0003.03.2022 11:24:00 Закрыт 00:09:00

От подачи заявки до выполнения прошло 4 минуты. Сравнительно легко добавлять логику исключения времени нахождения в статусе Приостановлен.
Вот как раз и напрашивается вопрос,
допустим это какой нибудь сервис менеджер, который отслеживает SLA . В нем эта логика будет зашита и будет выбрасываться алерт,
смысл в отчете, который запускается ежесекундно и отслеживает показатель нулевой.
Так?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Оконные и аналитические функции. Практическое применение
    #40138192
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorShr [игнорируется] 

Мне сейчас трудно представить, что бы я делал без оконных функций. Если говорить корректно, может быть я без них обошелся бы, но уже не помню, как. Ибо настолько к ним привык.
Простой пример. Есть таблица с колонкой date_begin (date_end - нету). Не важно, что это - курс доллара, допустим. В другой таблице есть всякие разные покупки в валюте. Нужно добавить колонку - сумма в рублях. то есть для каждой строчки найти строчку с правильным курсом доллара.
Еще пример из жизни - нужно выдать зарплату N сотрудникам из M мешков с деньгами (реальная задача) две таблицы - итог связь двух таблиц, номер сотрудника, номер мешка, сумма. Попробуйте решить.
Да и просто найти дубли в таблице по определенному набору полей. Наверняка решите без оконных функций. А я уже без оконных функций не знаю, как решать.
Еще для затравки вам, чтоб интерес к задаче появился. Есть колода карт (таблица). Надо перетасовать колоду и выдать на экран из первые десять карт. одним селектом ессно, без циклов.
...
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40138194
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и стандартный пример, который используется в 90% случаев.
Большой селект, обращающийся к разным таблицам. В таблицах есть дубли по определенным полям. Нужно, чтоб их не было. например, джойн по полю id и могут быть несколько строк с одинаковым id, что однозначно породит дубли в итоговом запросе.
чтоб убрать дубли, заказчик требует выбрать только те строки, у которых максимальный date_begin (ну или какое другое поле поле - максимально-минимально)
попробуйте решить такую задачку без оконных функций.
С помощью оконной функции
row_number() over (partition by id order by date_begin desc)
задача решается с полпинка.
Интересно ваше решение без оконных функций.
оконные функции - инструмент. Заказчиков оконных функций нет. Есть проблема, которую надо решить. и вот тут инструмент вполне так может понадобится. В примере выше - вы видите требование заказчика. Там ни слова про оконные функции. Это ваш талант и умения должны вам подсказать, что их использование тут как нельзя кстати.
...
Изменено: 31.10.2023, 12:10 - bhr
Рейтинг: 0 / 0
Оконные и аналитические функции. Практическое применение
    #40138245
Shtirlitz33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простой пример.
есть набор сумм договоров с плюсами и минусами. Например по клиенту что-то типа

договор 1 +1000 дата 01.01.2023
договор 2 -500 дата 03.01.2023
договор 3 -200 дата 01.05.2023

И общий список скажем в сумм 1000 по десятку разных клиентов.
И во всем этим клиентом надо сделать свертку этих сумм например по дате начиная с минимальной отбрасывая лишние суммы по одной из сторон и оставляя остаток на погранично сумме(т.е. в примере выше от тысячи останется 300 рублей).

Аналитикой ве это можно сделать в одном запросе получив на выходе готовый список где будет что-то типа
клиент 1 всего позиций 3 эта позиция 1 договор 1 сумма +1000 закрываем 700
клиент 1 всего позиций 3 эта позиция 2 договор 1 сумма -500 закрываем -500
клиент 1 всего позиций 3 эта позиция 3 договор 1 сумма -200 закрываем -200

По мне так проще потом читать и поддерживать зарос влезающий на одну страничку чем пихать все это например по коллекциям да потом по ним бегать пока не надоест или кучу раз читать одни и те же данные подбирая суммы.
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оконные и аналитические функции. Практическое применение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (4): Анонимы (4)
Пользователи онлайн (8): Анонимы (5), Bing Bot 1 мин., RePredeclared 2 мин., Yandex Bot 3 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]