Оконные и аналитические функции. Практическое применение

IgorShr
Дата: 02.03.2022 09:22:22
Всем привет
самостоятельно разбираюсь с темой, но вот пока не могу ответить на вопрос практического применения этих функций.
Пока сложилось впечатление, что примеры мягко говоря притянуты за уши. То есть скорее для демонстрации , а не для задач в жизни.
Кто сталкивался с оправданным применением?
Как выглядят реальные задачи в которых эффективно применение сабж?
Кто заказчик, в интересах которого используются? Особенно для аналитических функций (PERCENT_RANK, CUME_DIST, PERCENTILE_CONTи PERCENTILE_DISC);
Может прикопан ресурс , где на примере станет понятен профит ?

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

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

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

Да, не все функции одинаково широко применимы, как приведенные вами, но есть ситуации, когда и они нужны, например, при решении о премировании. Попробуйте решить эти задачи без аналитических функций и сравните получившийся код.
IgorShr
Дата: 02.03.2022 12:22:26
Asmodeus
IgorShr
Всем привет
самостоятельно разбираюсь с темой, но вот пока не могу ответить на вопрос практического применения этих функций.
Пока сложилось впечатление, что примеры мягко говоря притянуты за уши. То есть скорее для демонстрации , а не для задач в жизни.
Кто сталкивался с оправданным применением?
Как выглядят реальные задачи в которых эффективно применение сабж?
Кто заказчик, в интересах которого используются? Особенно для аналитических функций (PERCENT_RANK, CUME_DIST, PERCENTILE_CONTи PERCENTILE_DISC);
Может прикопан ресурс , где на примере станет понятен профит ?

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

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

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


Спасибо
Я не отрицаю удобства и оптимальности функций
Но пробую найти кто же заказчик похожей аналитики в повседневной жизни
PS
двум предыдущим авторам и ответить то нечего, тем более поблагодарить
Спросил одно, ответили на другое.
Asmodeus
Дата: 02.03.2022 12:32:18
IgorShr
Спасибо
Я не отрицаю удобства и оптимальности функций
Но пробую найти кто же заказчик похожей аналитики в повседневной жизни
Вот именно в такой постановке - вряд ли найдете за пределами учебника. Ибо "заказчику" чаще всего безразлично, как именно разработчик решил задачу. Может быть интересно администраторам, т.к. они контролируют использование ресурсов и их - ресурсов, - перерасход мало кому нравится. Аналитические функции - это инструмент, и пользоваться (или не пользоваться) инструментом - дело разработчика.
Master_Detail
Дата: 02.03.2022 12:39:36
IgorShr

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

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

IgorShr

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


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

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

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

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

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

IgorShr

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


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

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

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


ну так вот вопрос то ключевой так и звучал
Как сформулированы реальные задачи , которые бы эффективно решались с помощью функций?
а то что на абстрактных примерах учиться это не более чем просто понять механизм работы, это и так озвучил.
Из предложенной задачи понятно все, кроме ответа на вопрос : кому то в реальной жизни такой отчет действительно нужен?
Ну и еще , уже более расширенный вопрос.
из более продвинутых примеров упоминается например "Моделирование атрибуции"
Кто в реальной жизни с таким столкнулся? Моего уровня знаний в этой теме недостаточно, поэтому напрашивается вариант :
или поднимать знания на уровень классической аналитики или надеяться что перед разработчиком еще есть две ступени: бизнес и системный аналитик, которые из задачи бизнеса сформулируют ТЗ для разработчика, где будут уже более приземленные термины, нежели "Моделирование атрибуции
Никанор Кузьмич
Дата: 02.03.2022 13:22:11
IgorShr
Спросил одно, ответили на другое.
Вы спросили про практическое применение. Я сказал, где можно найти примеры практического применения. Люди приходят с конкретными практическими вопросами сюда, на SO, и на любые другие оракловые ресурсы. А им дают практические ответы - с функциями. Я ведь вас предупреждал, что последовательность действий
Никанор Кузьмич
открыл вопрос, глянул по диагонали, закрыл, "да ну фигня" и пошел дальше
- плохой способ учиться. А вы вдобавок решили первые два пункта пропустить и перейти сразу к "да ну фигня". Ну, что, удачи в освоении.
Никанор Кузьмич
Дата: 02.03.2022 13:25:10
IgorShr
Как сформулированы реальные задачи , которые бы эффективно решались с помощью функций?
Ваш вопрос эквивалентен вопросу "Как сформулированы реальные задачи, в которых необходимо писать ручкой на бумаге".