|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
Приветствую Надо в 11й версии вставить в копию таблицы всю строку где в одном из столбцов значение максимально. Аналогичная - скопировать только последние строки исходников, например уже есть таблица: Код: plsql 1.
Насколько я знаю более менее быстро работает такой запрос Код: plsql 1. 2. 3. 4.
но инсерт ругается что лишний столбец rn Поэтому вопрос нельзя ли избежать явного перечисления многочисленных столбцов или более долгого запроса? Или insert * в любом случае быдлокод) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 17:49 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
Aybo insert * в любом случае быдлокод ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 17:58 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
Aybo, если очень хочется, select * from all_source a order by max(id) over(partition by a.owner, a.name) -a.id в первых (select count(*) from all_source a group by a.owner, a.name) строчках будет содержать нужные строчки. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 18:43 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
НеофитSQL, Это как-то сложно. Значит и еще проще задача - запихать через select into одну такую максимальную строку по конкретному name в переменную all_source%rowtype нельзя? Только pl/sql цикл с сортировкой и exit? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2020, 12:50 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
Aybo Приветствую Надо в 11й версии вставить в копию таблицы всю строку где в одном из столбцов значение максимально. Код: plsql 1. 2.
авторАналогичная - скопировать только последние строки исходников, например уже есть таблица: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2020, 16:59 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
Ага работает, спс ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2020, 17:44 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
Aybo НеофитSQL, Это как-то сложно. Значит и еще проще задача - запихать через select into одну такую максимальную строку по конкретному name в переменную all_source%rowtype нельзя? Только pl/sql цикл с сортировкой и exit? Не так уж сложно: Код: plsql 1. 2. 3. 4. 5.
В отличие от решения предложенного Stax (которое мне нравится), этот также работает на представлениях и других result sets, у которых отсутствует rowid. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 15:52 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
НеофитSQL этот также работает на представлениях и других result sets, у которых отсутствует rowid. Грустно: ...бывают же извращенцы... В догонку к причинам, по которым не следует заниматься универсализмом на insert (для закрытого топика): env Колонки не менял. Кажется, оно сломалось. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
Мораль: никогда не делайте insert без перечисления атрибутов. Особенно легко обмануться на широких таблицах, но и на узких бывают нежданчики. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 16:07 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
НеофитSQL, Дополнительно вычитать вьюху со сложным порядком соединений и посчитать агрегат, лишь бы звёздочку в запросе написать? Да уж, лихой вы танцор, что тут говорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 16:23 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
И это... Неофит, даже несмотря на ставшую уже традиционной бредовость подхода все еще есть что поковырять: Код: plsql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 16:35 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
Stax авторАналогичная - скопировать только последние строки исходников, например уже есть таблица: Код: plsql 1. 2. 3.
..... stax Stax, я правильно понимаю, что если в исходных данных присутствует уникальный ключ, то его можно использовать вместо rowid, а если этот ключ с индексом, то и скорость будет сравнимая? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 16:46 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 16:49 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
andrey_anonymous И это... Неофит, даже несмотря на ставшую уже традиционной бредовость подхода все еще есть что поковырять: Код: plsql 1. 2. 3. 4. 5. 6. 7.
Первые две лучше и короче, спасибо. Насчет последней сомнения в производительности по сравнению с первыми двумя. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 17:01 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
НеофитSQL Stax, я правильно понимаю, что если в исходных данных присутствует уникальный ключ, то его можно использовать вместо rowid, а если этот ключ с индексом, то и скорость будет сравнимая? имхо, по rowid быстрее но по ключу тоже быстро, сравнимо зы в древних версиях rowid менялся в редких случаях ... ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 17:05 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
123йй Спасибо, это обсуждалось здесь ранее. Аксакалы вроде решили что rowid безопасен внутри запроса. 22228830 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 17:06 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
НеофитSQL Первые две лучше и короче, спасибо. Насчет последней сомнения в производительности по сравнению с первыми двумя. Традиционно не осознаете разницы между текстом написанным и программой исполненной. Впрочем, это всё вторично. Вы вот это разобрали внимательно? 22245618 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 17:25 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
НеофитSQL, Ещё раз. Любой инструмент имеет смысл использовать по назначению. Для разовых батчевых операций над одной физической таблицей в ad-hoc режиме, когда человек полностью понимает, что он делает - rowid выгоден. Для быстрого точечного обновления/удаления одной записи в коде/приложении - rowid можно использовать (и зачастую у компонент для работы с данными есть такая настройка). В качестве универсального решения для общего случая - недетерминировано, несопровождаемо, убивает идемпотентность на корню. Это не говоря уж о том, что мало применимо к вьюхам и имеет массу других ограничений по использованию. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 17:30 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
andrey_anonymous НеофитSQL Первые две лучше и короче, спасибо. Насчет последней сомнения в производительности по сравнению с первыми двумя. Традиционно не осознаете разницы между текстом написанным и программой исполненной. Впрочем, это всё вторично. Вы вот это разобрали внимательно? 22245618 Я посмотрел раньше. Насчет insert я согласен, поэтому не прокомментировал. Меня интересовал запрос в формате всей строки по другим причинам, для чтения. Решение с PK/UK вместо rowid меня вполне устраивает, а для многих ситуаций где у result set нет ключа, я могу сделать так, как показал ранее : отфильтровать по критерию, и отсчитать строки по числу групп. Еще Анна Щукина в недавней теме показала как можно сделать "with ties", если кому интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 17:34 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
НеофитSQL, Aybo "мешала" колонка rn, Вам она чем мешает? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 17:40 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
Stax, 22245573 Лень ему, просто лень. Поэтому будет городить монструозные небезопасные конструкции, лишь бы поля не писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 18:10 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
env, вот современные интернет-ресурсы в правилах оговаривают бан за написание текстов , разжигающих ненависть. Похоже, корпоративные правила написания текстов запросов полностью игнорируют эту тему. Счастливый следующий все сломает по своему. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 18:14 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
env Stax, 22245573 Лень ему, просто лень. Поэтому будет городить монструозные небезопасные конструкции, лишь бы поля не писать. в перечислении, тоже есть минус синхронно поменяли структуры источника и приемника, а в copy не поправили, ничего не слетает, зато и не сохраняет пока боком не вылезет, работает ведь * слетит, сразу заметят ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 18:23 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
Stax, Про звёздочку Андрей уже хорошо показал, к чему может привести. Stax синхронно поменяли структуры источника и приемника, Если при изменении структур не проверяются dependency, то это мягко говоря печально. А если добавляемые поля not null, то упадёт обязательно. От ошибки с порядком однотипных/конвертируемых полей по факту не спасёт ни *, ни перечисление. Разве что динамически каждый раз по словарю генерить список с проверкой наличия полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 18:35 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
Stax, ну, andrey_anonymous намекал на замену последовательности полей. Представь, что это view - там это много более вероятно. Если переставленные поля совместимы по типу - так и будут мусор в данных получать годами. "Заметят" случайно, после ареста счетов налоговой инспекцией. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 18:37 |
|
Получить строку таблицы где 1 значение максимально
|
|||
---|---|---|---|
#18+
env Stax, Про звёздочку Андрей уже хорошо показал, к чему может привести. многое от задачи зависит тихо работает, но неполно (неправильно), может быть болезненей чем разовый слет тем более после правки структур (ограничений) ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 18:41 |
|
|
start [/forum/topic.php?fid=52&fpage=30&tid=1880618]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 278ms |
total: | 429ms |
0 / 0 |