powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Группировка с нахождением новейших строк.
11 сообщений из 36, страница 2 из 2
Группировка с нахождением новейших строк.
    #40025714
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

max по rowid для блока with построенного на dual? Месье знает толк в извращениях.
...
Рейтинг: 0 / 0
Группировка с нахождением новейших строк.
    #40025715
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На этом примере куда лучше видно, что адекватно формулировать свою задачу у вас не получается.
...
Рейтинг: 0 / 0
Группировка с нахождением новейших строк.
    #40025719
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax
НеофитSQL

Но... не работает. Нельзя rowid использовать ни с distinct, ни с group by.


по одному наймолодшему в отделе

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  1  select * from emp where rowid in
  2* (select substr(max(to_char(hiredate,'yyyymmdd')||rowid),9) r from emp e2 group by deptno)
SQL> /

     EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
      7876 ADAMS      CLERK           7788 12.01.1983       1100                    20
      7900 JAMES      CLERK           7698 03.12.1981        950                    30
      7934 MILLER     CLERK           7782 23.01.1982       1300                    10

SQL>



.....
stax


Вы, однако, извращенец.

После моего комментария я увидел что загвоздка с rowid была из-за inline views, я вначале неправильно прочитал сообщение об ошибке, и написал об этом. 22243959

А потом кто-то увидел max(rowid), недочитал строку, и началось...
...
Рейтинг: 0 / 0
Группировка с нахождением новейших строк.
    #40025723
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
K790
посыпаю голову пеплом, понял.
тогда вопрос как построена архитектура?


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

Я подозревал что ответ который дает колонку rowid - оптимальный, потому что доступ по rowid бесплатный, и потому что rowid существует, исходя из постановки задачи (выдать строки целиком по критерию). Но у меня не получалось его написать, т.к. я забыл что у CTE нет rowid.

Потом, с подсказкой от SY и других, все получилось. 22243959
...
Рейтинг: 0 / 0
Группировка с нахождением новейших строк.
    #40025725
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
На этом примере куда лучше видно, что адекватно формулировать свою задачу у вас не получается.


Некоторым танцорам штаны мешают ;-)
...
Рейтинг: 0 / 0
Группировка с нахождением новейших строк.
    #40025727
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

Вы разберетесь сами на этом примере, почему здесь МАХ не дает максимальную цену, и почему его можно заменить на MIN или AVG?


авторЦены не более одного раза в день обновляются

обновите цену два раза в день (без времени), и будет Вам max

ps
если order by ... не уникально строку с помощью keep не выбрать

.....
stax
...
Рейтинг: 0 / 0
Группировка с нахождением новейших строк.
    #40025747
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

Потом, с подсказкой от SY и других, все получилось. 22243959


??? Моя "подсказка" была с MAX/MIN ROWID ничего не выйдет. Stax показал "дедовский" метод которым мы пользовались в дремучие времена когда Oracle не поддерживал аналитические ф-ции. А моя основная "подсказка" была используй SCD2 - цена меняется мах 2 раза в день а выбирается куда больше раз. Так-что потери на изменение цены через SCD2 с лихвой окупятся при выборке.

SY.
...
Рейтинг: 0 / 0
Группировка с нахождением новейших строк.
    #40025748
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> обновите цену два раза в день (без времени),

Тогда условия задачи требуют корректировки, т.к. "последняя цена" не определена. Если "любая из последних", то MAX подойдет, и MIN подойдет, а вот с AVG будут проблемы.

Эх, надо было AVG(rowid) написать. Жаль, что это не число :)

Для параноиков как я, в таблицу можно добавить уникальный constraint по (prod,clr,day).
A в квери - поставить "бомбу" которая ее сломает если все-таки появились дупликаты.
Чтоб неповадно.
...
Рейтинг: 0 / 0
Группировка с нахождением новейших строк.
    #40025750
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY
НеофитSQL

Потом, с подсказкой от SY и других, все получилось. 22243959


??? Моя "подсказка" была с MAX/MIN ROWID ничего не выйдет. Stax показал "дедовский" метод которым мы пользовались в дремучие времена когда Oracle не поддерживал аналитические ф-ции. А моя основная "подсказка" была используй SCD2 - цена меняется мах 2 раза в день а выбирается куда больше раз. Так-что потери на изменение цены через SCD2 с лихвой окупятся при выборке.

SY.


Я говорил про 22243953 .
Там пример был чужой и сломанный, но теперь у меня свой и как env уже увидел, правильно работающий.

Про SCD2 почитаю на будущее. Сейчас не применю, т.к. строил одноразовый отчет по архивным данным.
...
Рейтинг: 0 / 0
Группировка с нахождением новейших строк.
    #40025862
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Некоторым танцорам штаны мешают

Купите штаны пошире (официальную поддержку).
...
Рейтинг: 0 / 0
Группировка с нахождением новейших строк.
    #40025866
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
как env уже увидел, правильно работающий

Этого я не говорил
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Группировка с нахождением новейших строк.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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