|
|
|
Есть ли такой функционал в АСА?
|
|||
|---|---|---|---|
|
#18+
Часто возникает потребность сделать выборку, смысл которой вывести первые записи из некой группы и значение одного поля для максимального/минимального значения другого поля внтури этой группы. Т.е. например, есть записи: abc310910714120103531969853712196985152049761220497622 А в результате нужно получить все записи сгруппированные по b, и вывести такое a, для которого c будет максимальным внутри группы по b: xy3109107412010331969852204976 В АСА есть замечательные OLAP функции. Так и хочется написать: Код: plaintext 1. 2. Но насколько я знаю, агрегатной функции first() в АСА-9 нет?! Но ее так иногда не хватает. sum,max,min - ну почему бы не сделать еще какие-нибудь first и last... P.S. крик души, так сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2010, 20:19 |
|
||
|
Есть ли такой функционал в АСА?
|
|||
|---|---|---|---|
|
#18+
Не надо кричать душой, лучше сначала попытайтесь объяснить себе и нам, что означает first, особенно в терминах агрегатных функций, да еще и без сортировки. В ASA есть FIRST, но это не агрегатная функция. Может в подзапросе выбрать искомое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2010, 21:31 |
|
||
|
Есть ли такой функционал в АСА?
|
|||
|---|---|---|---|
|
#18+
Запрос конечно отстой, но на ваших данных работает. SELECT b, a FROM iller i where c=(select max(i2.c) from iller i2 where i2.b=i.b) P.S. Я бы для себя разбил на два запроса с временной таблицей, на столько не люблю вложенные запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2010, 22:34 |
|
||
|
Есть ли такой функционал в АСА?
|
|||
|---|---|---|---|
|
#18+
first(a) over (partition by b order by c desc) - это есть оконная OLAP-функция, которая берет блок с одинаковыми значениями b, затем внутри его сортирует записи по убыванию c, а first возьмет первое значение из поля "a" в этом окне. Это я мечтаю, чтобы такое было.))) В том-то и дело, что в лоб задача решается либо с подзапросами, либо с inner join. Но по сути-то, over тем и хорош, что табличка сканируется только один раз, нет никаких подзапросов и соединений с временными массивами. Производительность операций реализованных на более низком уровне всегда выше на порядки, чем реалзованных на высшем уровне. И ведь постоянно на форуме всплывают задачки аналогичная моей, выбрать записи соответствующие макс/мин значению из соседнего поля в пределах какой-то группы. А если кинуть на форуме пожеланий на sybase.com, есть вероятность что на АСА9 реализуют, или если и услышат, то сделают только в АСА11/12/13? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2010, 23:06 |
|
||
|
Есть ли такой функционал в АСА?
|
|||
|---|---|---|---|
|
#18+
дявятку сняли с поддержки уже, так что добавлять фичи точно не будут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 00:01 |
|
||
|
Есть ли такой функционал в АСА?
|
|||
|---|---|---|---|
|
#18+
Ggg_oldЗапрос конечно отстой, но на ваших данных работает. SELECT b, a FROM iller i where c=(select max(i2.c) from iller i2 where i2.b=i.b) P.S. Я бы для себя разбил на два запроса с временной таблицей, на столько не люблю вложенные запросы. И мой отстойчик работает!!))) Код: plaintext 1. 2. 3. Модератор: Не стесняйтесь резать длинные запросы на несколько строк. Их и читать удобнее будет и экран не надо будет горизонтально прокручивать. Не забывайте про кнопку "Предварительный просмотр" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 10:35 |
|
||
|
Есть ли такой функционал в АСА?
|
|||
|---|---|---|---|
|
#18+
iLLer wrote: > Но насколько я знаю, агрегатной функции first() в АСА-9 нет?! Но ее так > иногда не хватает. sum,max,min - ну почему бы не сделать еще > какие-нибудь first и last... > > P.S. крик души, так сказать. Как бы реляционные БД не ориентированы на последовательную обработку данных. Они ориентированы на обработку множеств. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2010, 09:51 |
|
||
|
Есть ли такой функционал в АСА?
|
|||
|---|---|---|---|
|
#18+
MasterZiv iLLer wrote: > Но насколько я знаю, агрегатной функции first() в АСА-9 нет?! Но ее так > иногда не хватает. sum,max,min - ну почему бы не сделать еще > какие-нибудь first и last... > > P.S. крик души, так сказать. Как бы реляционные БД не ориентированы на последовательную обработку данных. Они ориентированы на обработку множеств. + помоему можно поиграться с TOP N c соответствующей сортировкой( с ASC -получится first ,а с DESC получится last) или я не так понял суть нехватки FIRST и LAST ))? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2010, 11:43 |
|
||
|
Есть ли такой функционал в АСА?
|
|||
|---|---|---|---|
|
#18+
ASA 11: FIRST_VALUE function Returns values from the first row of a window. This function requires a window specification. LAST_VALUE function Returns values from the last row of a window. This function requires a window specification. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2010, 11:59 |
|
||
|
Есть ли такой функционал в АСА?
|
|||
|---|---|---|---|
|
#18+
MasterZiv iLLer wrote: > Но насколько я знаю, агрегатной функции first() в АСА-9 нет?! Но ее так > иногда не хватает. sum,max,min - ну почему бы не сделать еще > какие-нибудь first и last... > > P.S. крик души, так сказать. Как бы реляционные БД не ориентированы на последовательную обработку данных. Они ориентированы на обработку множеств. А чем требуемый результат в моем примере не множество? Причем алгоритм обработки не подразумевает той последовательности , о которой Вы говорите. Ведь результат можно достичь запросом с подзапросом?! Каким путем идти при обработке - это дело нутра сервера, а как это выглядит синтаксически - это дело вообще десятое, самое главное суть. Ведь FIRST и TOP N не вызывают таких вопросов?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2010, 20:30 |
|
||
|
Есть ли такой функционал в АСА?
|
|||
|---|---|---|---|
|
#18+
L.M.ASA 11: FIRST_VALUE function Returns values from the first row of a window. This function requires a window specification. LAST_VALUE function Returns values from the last row of a window. This function requires a window specification. Во-во, это то, что надо! Жаль в 9-ке нет. Еще один повод для апгрейда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2010, 20:33 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=30&tid=2010715]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 396ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...