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

Вид: 14301|Ответ: 1

[Источник] Разница между rownum и row_number() в Oracle

[Скопировать ссылку]
Опубликовано 25.09.2017 16:00:21 | | |
row_number()over(разбиение по порядку COL1 по COL2) означает сортировку по COL2 внутри группы, и значение, вычисляемое этой функцией, представляет собой номер порядка (последовательный уникальный в группе) после внутренней сортировки каждой группы. Отличие от rownum в том, что при использовании rownum для сортировки вы добавляете некачественный rownum в набор результатов и затем сортируете его, в то время как row_number() сначала сортирует, а затем вычисляет номер строки после включения сортировочной клаузы.

1. Rownum в оракуле

Используется для нумерации возвращаемых строк из запроса: первой возвращаемой строке присваивается 1, вторая строка — двойка и так далее; это псевдополе можно использовать для ограничения общего числа возвращаемых строк, при этом номер ряда не может быть префиксирован именем какой-либо таблицы.

1. Rownum для условий запроса, равный определённому значению

Если вы хотите найти первого ученика в таблице студентов, можно использовать rownum=1 как условие. Однако, если вы хотите найти информацию второго студента в таблице студентов, вы не можете найти данные с помощью rownum=2. Поскольку rownum начинается с 1, а натуральные числа выше 1 считаются ложными, если rownum считается равным да, поэтому невозможно найти rownum = n(n>1 натуральных чисел).




2. Rownum для условий запроса, превышающего определённое значение

Если вы хотите найти записи со второй строки, при использовании rownum>2 не удаётся найти записи, вы можете использовать следующие методы подзапроса для решения задачи. Обратите внимание, что rownum в подзапросе должен иметь псевдоним, иначе запись не будет найдена, потому что rownum не является столбцем таблицы, и если псевдонима нет, невозможно узнать, является ли rownum столбцем подзапроса или столбцем основного запроса.




3. RowNum для условий запроса меньше определённого значения

Если вы хотите найти предыдущую запись третьей записи, можно получить две записи, используя rownum<3. Очевидно, rownum считает, что условие rownum < n (натуральное число (n>1) верно, поэтому вы можете найти запись.




4. Роуннум и упорядочение

Rownum в Oracle — это номер последовательности, генерируемый при извлечении данных, поэтому если вы хотите указать данные строки rowmun для указанных отсортированных данных, нужно обращать на них внимание.




ИМЯ ROWNUM ID
---------- ------ ---------------------------------------------------
3 200003 Ли Сан
2 200002 Ван Эр
1 200001 Чжан И
4 200004 Чжао Сы

Видно, чтоЧисло ряда не является последовательном номером, порождаемым столбцем имени。 Система назначает номер строки записей в порядке их вставки, и rowid также назначается в порядке. Для решения этой задачи необходимо использовать подзапросы




ИМЯ ROWNUM ID
---------- ------ ---------------------------------------------------
1 200003 Ли Сан
2 200002 Ван Эр
3 200001 Чжан И
4 200004 Чжао Сы

2. Оракул row_number ()

1、row_number() над (порядок по col_1[,col_2 ...])
Согласно col_1[,col_2 ...] Сортировка, возвращает отсортированный набор результатов и возвращает разное значение для каждой строки.

2、row_number() по (разбиение на col_n[,col_m ...] порядка по col_1[,col_2 ...])
Во-первых, согласно col_n[,col_m ... группировав и затем в каждой группировке согласно col_1[,col_2 ...] сортировать (восходящее) и, наконец, вернуть отсортированный набор результатов

Экземпляр Oracle row_number()

1. Используйте функцию row_number() для нумерации, например



Принцип: Сначала отсортировать по PSD, а после сортировки пронумеровать каждый фрагмент данных.

2. Отсортируйте заказ по возрастающему порядку цены и отсортируйте каждую запись следующим кодом:



3. Посчитайте количество заказов, сделанных каждым клиентом в последнее время.




4. При использовании функций открытия окна, таких как over, выполнение группировки и сортировки в over происходит позже, чем выполнение функции «where, group by, order by».



Вышеуказанный код сначала выполняет предложение where, а затем нумерует каждую запись после выполнения.

3. Разница между row_number () и rownum

При сортировке с rownum вы добавляете некачественный rownum в набор результатов и затем сортируете его, в то время как row_number() сначала сортирует, а затем вычисляет номер строки после включения сортировочной клаузы.




Предыдущий:На этот раз Xunlei Wanke Cloud краудфандингит Taobao для пользователей как обезьяны?
Следующий:Oracle запрашивает все столбцы в таблице и их типы данных
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com