powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / OLAP в ASA9
17 сообщений из 17, страница 1 из 1
OLAP в ASA9
    #33025149
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сильно не пинайте, но на форуме по OLAP сидят одни MSSQLники.
Спрошу здесь.
На входе есть таблица:
id id2 d
101 230 02.03.04
101 231 01.02.04
101 232 12.01.05
102 232 10.12.04
102 230 01.02.05
Как SQL запросом получить такое:
101 232 12.01.05
102 230 01.02.05
Т.е. те записи, у которых d максимально среди группы id. Очевидно надо делать с использованием OLAP функций, но никак не могу въехать как.
Подскажите.
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33025176
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось так:

select *
from
(select id,id2,max(d) over (partition by id),d
from test_agr2) as v(i1,i2,d1,d2)
where d1=d2;

Вопрос меняю:
А можно ли как-нибудь обойтись без вложенных селектов?
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33025374
serg08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А причём тута Online Analitic Processing.
Вообще то фунция Мах и есть одна из Olap функций.
Тут вопрос идеологии.
Идеология OlAP предполагает удобство в расчёте агрегатов
в ущерб построчной обработки и не взирая на избыточность данных.
Для этого ипользуеться Sybase IQ для доступа по столбцам, а не по строкам.
Либо используеться Microsoft OLAP -services c предварительным просчётом агрегатов.
Исходя из идеологии Olap Вам нужно сделать на каждую группу по таблице и подзапросы исчезнут. Чудес, к сожалению, не бывает.
ASA, предполагаю, не имеет возможности создавать кубы данных.
Пулю надо лить из свинца.
Если хотите иметь нормальные OLAP -ответы используйте Olap средства и думайте по олаповски.
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33025410
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serg08:
Думаю, что Вы немного не в тему ответили.)
Вопрос был именно про OLAP возможности ASA. И именно о применении OLAP функций для выборок.
Мне главное - сделать выборку, а не применить функции.
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33025462
just_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select id,id2,d from tab_name
group by id
having d = max(d)
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33025505
serg08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А я так старался!
Выборка (Select в переводе) лучшее для выборки.
Лучше гор могут быть только горы!!!
А функции это понятие скорее из области математики, чем из
баз данных. Т. е. это нечто дополнительное, что налагается уже на результат
выборки.
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33027011
CyberBrine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
just_meselect id,id2,d from tab_name
group by id
having d = max(d)

Горячо поддерживаю, ибо гипноз от громких слов типа OLAP просто мешает решать конкретные задачи, затуманивает разум и все такое
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33027363
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> select id,id2,d from tab_name
>> group by id
>> having d = max(d)

> Горячо поддерживаю, ибо гипноз от громких слов типа OLAP просто мешает
> решать конкретные задачи, затуманивает разум и все такое

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

Function or column reference to 'id2' must also appear in a GROUP BY
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33027493
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели ни у кого не возникало такой задачи? Очень странно.
Решение интересно ввиде одного запроса. Курсоры, хп и прочее - не интересно.

CyberBrineГорячо поддерживаю, ибо гипноз от громких слов типа OLAP просто мешает решать конкретные задачи, затуманивает разум и все такое
Вот КОНКРЕТНАЯ ЗАДАЧА, решите ее! И покажите мне ее решение, тогда я соглашусь с Вашим утверждением. И не в OLAPе дело, просто без него в АСА я не представлял себе решения, с выходом 9-ки ситуация изменилась. Осталось только научится правильно это использовать. Может приведенный мной селект и есть правильный, я не знаю, поэтому обращаюсь к знающим людям.
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33027525
Litus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select id,id2,d from tab_name
having d = max(d)

Не знаю, как в ASA, но в ASE это должно прекрасно работать

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33027547
Litus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:-) вру. Запрос, который был выше, правильный!
тока он в ASA не будет работать, как я понял. :-(
но в ASE он работает
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33027734
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iLLerПолучилось так:

select *
from
(select id,id2,max(d) over (partition by id),d
from test_agr2) as v(i1,i2,d1,d2)
where d1=d2;

Вопрос меняю:
А можно ли как-нибудь обойтись без вложенных селектов?
Код: plaintext
1.
2.
3.
4.
5.
SELECT t1.*
FROM test_agr2 t1
WHERE t1.d = (
  SELECT Max(d)
  FROM test_agr2 t2
  WHERE t2.id1 = t1.id AND t2.id2 = t1.ud );
P.S. Я вот только понять никак не могу, причем в данной задаче вообще OLAP. OLAP нужен для расчетов аггрегаций по указанным измерениям, подводом итогов по группам, расчета нарастающих сумм и т.д. Но уж никак, чтобы просто выбрать из таблицы последние актуальные записи по дате :) Кстати можно еще 3-5 других форм на эту задачу запроса накатать, просто нужно будет смотреть, какой план будет предпочтительнее.
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33027911
serg08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Один из лидеров в области OLAP Hewlet Packard -для создания
OLAP систем предлагает формированию групп обьединённого
создания приложений. (Joint Application Development).
В этих группах НЕ МОЖЕТ быть больше 20% IT -специалистов.
Нас боятся! Как понимаю из вышеприведенного не зря.
По большому счёту OLAP это не наше дело господа!
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33028103
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSP.S. Я вот только понять никак не могу, причем в данной задаче вообще OLAP. OLAP нужен для расчетов аггрегаций по указанным измерениям, подводом итогов по группам, расчета нарастающих сумм и т.д. Но уж никак, чтобы просто выбрать из таблицы последние актуальные записи по дате :) Кстати можно еще 3-5 других форм на эту задачу запроса накатать, просто нужно будет смотреть, какой план будет предпочтительнее.
Ну, господа, не знаю причем тут ОЛАП, но "max(d) over (partition by id)" - средство ОЛАП. Так написано в документации. Оттуда же взят пример, который был модифицирован. Пример вот такой:
select *
from
(select id,id2,max(k) over (partition by id),k
from table) as v(i1,i2,k1,k2)
where 0.95*k1<k2;
Это выборка пяти процентов топовых записей по значению k. Я и подумал, что раз мне надо одно топовое, значит можно написать не 0.95*k1<k2, а k1=k2.

Мне показалось, что ОЛАП, встроенный в АСА будер работать лучше(быстрее), чем обычные селекты, т.к. специализированные средства всегда лучше универсальных.

P.S.: А нафига тогда придумали "max(..) over (..)", если можно обойтись без него?
P.S.2: авторselect id,id2,d from tab_name
having d = max(d) Помню, что такое давно писал и оно работало (только уже не помню где и когда), но в АСА такое не катит. А жаль.
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33028155
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSНо уж никак, чтобы просто выбрать из таблицы последние актуальные записи по дате :)

Почему нет? Это табу?!)))

ASCRUSКстати можно еще 3-5 других форм на эту задачу запроса накатать, просто нужно будет смотреть, какой план будет предпочтительнее.
Все мои ковыряния этой темы идут как раз от поиска лучшего плана.
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33028398
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iLLer ASCRUSНо уж никак, чтобы просто выбрать из таблицы последние актуальные записи по дате :)

Почему нет? Это табу?!)))
Да потому что не оптимально будет. Выбрать 5 процентов топовых записей из всего набора данных и выбрать записи по актуальности последней даты IMHO немножко разные задачи.

iLLerМне показалось, что ОЛАП, встроенный в АСА будер работать лучше(быстрее), чем обычные селекты, т.к. специализированные средства всегда лучше универсальных.
Мое мнение, что он будет однозначно лучше и быстрее работать, особенно на финансовых функциях, для чего собственно говоря и был сделан. Ваш пример оптимальнее всего делается обычным подзапросом Max/ORDER DESC в любой инкарнации INNER JOIN, LATERAL, WHERE IN/EXISTS/= .

P.S. А вообще то может быть расскажите, чем не устраивает обычный подзапрос, неужели так тормозит ?
...
Рейтинг: 0 / 0
OLAP в ASA9
    #33028778
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть определенные таблицы. Из них делается выборка с использованием ОЛАП функций(мат.статистика). Все таблицы не маленькие (3 млн, 11 млн, 50 млн), строится их пересечение, но в область просмотра выборки естессно попадает определенное окно. Вообщем все работает, по скорости даже сносно.
Функции регрессии и т.п. работают в два прохода(мануал АСА), не хотелось бы вешать на этот селект еще вложенный, причем по одной из тех таблиц, когда по ним и так ползает ОЛАП.
Хотя, возможно, оптимизатор АСА настолько сообразительный, что совместит операции по расчету результатов ОЛАП функций и выделение результатов вложенного селекта.
Но в целом, мне все ответы понятны. Спасибо за внимание.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / OLAP в ASA9
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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