Ноябрь/Декабрь 2003


Сделано в России


Александр Соколов
Компания РДТЕХ
(mailto:ap_sokolov@mail.ru)
(под редакцией М. Р. Когаловского,
mailto:kogalov@cemi.rssi.ru)

О чистоте русского языка и точности терминологии
(часть XVII)

  • Введение
  • Из переписки
  • read consistency
  • index-organized table
  • loop back
  • collection unnesting
  • table collection expression
  • undo segment
  • index cluster и indexed cluster
  • bulk bind, bulk binding, bulk-bind
  • directory object
  • operator
  • object materialized view
  • Public database link
  • table function
  • tie values
  • dense rank

    Введение

    Данный выпуск колонки посвящен продолжению обсуждения терминологических вопросов, возникших в процессе перевода комплекта документации СУБД Oracle9i, который был выполнен компаниями РДТЕХ ( www.rdtex.ru) и ITI Ltd. (www.iti.ru).

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

    Из переписки

    read consistency
    Старый перевод: "целостность чтения". В общем случае чтения, согласованные на момент времени начала запроса, не являются целостными (Энциклопедия Когаловского). СОГЛАСОВАННОСТЬ ЧТЕНИЯ.

    Отсюда, "data consistency" – "согласованность данных", "statement-level read consistency" – "согласованность чтения на уровне оператора", "transaction-level read consistency" – "согласованность чтения на уровне транзакции", "transaction set consistent" – "согласованный на уровне набора транзакций".

    index-organized table

    Вопрос.
    Что из трех: "индексная таблица", "индексно-организованная таблица", "таблица, организованная в виде индекса"?

    Ответ.
    "индекс-таблица"

    loop back

    Контекст.
    The reference cannot loop back to an object on the local database (for example, by way of a synonym on the remote database pointing back to an object on the local database). (Oracle9 i SQL Reference, SQL Statements: CREATE SYNONYM to CREATE TRIGGER)

    Предложение переводчика.
    Здесь: циклически приводить (к объекту).

    Комментарий Александра Соколова.
    Мне этот перевод почему-то не нравится. Может быть кто-то предложит лучшее решение? По ABBY Lingvo "loop back" – "возврат к началу цикла".

    Комментарий Анатолия Бачина. (abachin@fors.ru).
    Почему бы не вспомнить старое, доброе "зациклить", "зацикливание"?

    Комментарий Марка Вольштейна. (Mark.Volshtein@iti.ru).
    По-моему, в этом предложении нет никакого цикла:

    "Эта ссылка не может указывать на объект локальной БД.".

    Комментарий Натальи Суренской. (surenska@rdtex.ru).
    Причина вашей дискуссии – слишком маленький фрагмент текста, не дающий представления, о чем же все-таки идет речь. Вот этот фрагмент: "DML statements and CREATE TABLE ... AS SELECT statements that reference remote objects can run in parallel. However, the "remote object" must really be on a remote database. The reference cannot loop back to an object on the local database (for example, by way of a synonym on the remote database pointing back to an object on the local database)."

    А вот примерный перевод. Все ясно: "Однако удаленный объект действительно должен находиться в удаленной БД. Ссылка не может приводить в конце концов к ссылке на объект локальной БД, например, при использовании синонима удаленной БД, который возвращает нас к объекту локальной БД (ссылается на объект локальной БД)."

    Комментарий Андрея Майорова. (mayorov@rdtex.ru).
    Определенный логический цикл все же есть. Речь идет о командах, выполняемых в локальной СУБД и ссылающихся на объекты удаленной базы, которые в свою очередь являются ссылками на объекты в локальной базе. То есть получается обратная ссылка. Но я бы не стал зацикливаться :) на "loop", и к версии Вольштейна лишь добавил бы: "эта ссылка не может указывать (ссылаться) ОБРАТНО на объект локальной БД.

    Резюме.
    На мой взгляд, дело осталось только за переводчиком. Следует отметить, "loop back" в Oracle9i SQL Reference в аналогичном контексте встречается несколько раз.

    Окончательный перевод из книги Oracle9i. Справочное руководство по языку SQL.
    Операторы DML и операторы CREATE TABLE ... AS SELECT, которые обращаются к удаленным объектам, могут выполняться параллельно. Однако "удаленный объект" должен действительно находиться в базе данных с удаленным доступом. Ссылка не должна циклически приводить к объекту, расположенному в локальной базе данных (к примеру, если синоним на удаленной базе данных указывает на объект в локальной базе данных).

    collection unnesting

    Контекст.
    The table_collection_expression lets you inform Oracle that the value of collection_expression should be treated as a table for purposes of query and DML operations. This process of extracting the elements of a collection is called collection unnesting. (Oracle9i SQL Reference)

    Предложение переводчика.
    "превращение вложенной коллекции в таблицу"

    Комментарий Михаила Рувимовича Когаловского.
    Нужно заметить, что процитированный исходный текст не отличается логичностью. Какой "этот процесс"? В первой фразе нет речи о каком-либо процессе. Может быть, конечно, этот термин и не нужен. Любопытно, как звучит конструкция table_collection_expression, а также collection_expression в переводе документации. Здесь ведь уже не скажешь по аналогии с "табличным выражением" (table_expression) – "коллекционное выражение". А в этом – путь к построению термина, о котором мы говорим. Мне кажется, авторы понимают здесь "collection unnesting" как уплощение вложенной коллекции – ее развертывание в одноуровневую.

    Комментарий А. Соколова.
    Перевод в книге Oracle9i. Справочное руководство по языку SQL выглядит примерно так:

    "Выражение_table_коллекция указывает Oracle, что значение выражения_коллекции должно интерпретироваться как таблица при запросах и операциях DML. Выражение_коллекции может быть подзапросом, столбцом, функцией или конструктором коллекции. Вне зависимости от формы должно возвращаться значение коллекции (то есть значение типа вложенной таблицы или массива переменной длины). Этот процесс извлечения элементов коллекции называется collection unnesting (устранение вложенности коллекции).

    Примечание: в ранних версиях Oracle, когда выражение_коллекции было подзапросом, выражение_table_коллекции выражалось как "THE подзапрос". Теперь этот синтаксис не используется".
    Пример использования выражения_table_коллекция из этой же книги:

    SELECT t1.department_id, t2.* FROM hr_info t1, TABLE(t1.people) t2
    WHERE t2.department_id = t1.department_id;

    Обсуждение перевода термина "table collection expression" см. ниже.

    Резюме.
    "устранение вложенности коллекций"

    table collection expression

    Контекст.
    The table_collection_expression lets you inform Oracle that the value of collection_expression should be treated as a table for purposes of query and DML operations.

    Старое предложение.
    "выражение, информирующее СУБД Oracle о необходимости интерпретации коллекции как таблицы"

    Предложение Александра Слепака (Alexander.Slepak@iti.ru).
    "выражение с табличной коллекцией"

    Резюме.
    Предложение принято.

    undo segment

    В связи с появлением в СУБД Oracle9i автоматического управления пространством отката транзакций (Automatic Undo Management) образовалось два аналогичных термина: "undo segment" и "rollback segment". Предлагается переводить их одним термином "сегмент отката". Если же требуется их противопоставление, использовать "undo-сегмент" или "rollback-сегмент".

    Дополнительное предложение А. Соколова.
    Вместо "undo-сегмент" и "rollback-сегмент" еще лучше использовать "сегмент отката, управляемый автоматически" и "сегмент отката, управляемый вручную".

    index cluster и indexed cluster

    Контекст.

    1. Hash clusters group table data in a manner similar to regular index clusters (clusters keyed with an index rather than a hash function). (Oracle9I Database Concepts)
    2. In an indexed cluster, all rows with the same cluster key value are stored in the same data blocks. (Database Tuning with the Oracle Tuning Pack)

    Предложения переводчиков.

    1. "индексный кластер"
    2. "индексированный кластер"

    Вопрос одного из переводчиков.
    "Indexed Cluster" – это же это самое, что "index cluster"?

    Комментарий А. Соколова.
    Насколько я понимаю, одно и тоже. Не мудрствуя лукаво, в предыдущих изданиях "Концепций" и других книг мы старались писать "индексный кластер".

    bulk bind, bulk binding, bulk-bind

    Контекст.
    The assigning of values to PL/SQL variables in SQL statements is called binding. The binding of an entire collection at once is called bulk binding. bulk binds improve performance by minimizing the number of context switches between the PL/SQL and SQL engines. With ~s, entire collections, not just individual elements, are passed back and forth.

    Предложения переводчиков.
    "массовое связывание", "связывание массива (групповое связывание)"

    Предложение А. Соколова.
    "массовое связывание"

    directory object

    Контекст.
    Use the CREATE DIRECTORY statement to create a directory object. A directory object specifies an alias for a directory on the server’s file system where external binary file LOBs (BFILEs) and external table data are located.

    Предложение переводчика.
    "объект каталога (каталог, являющийся объектом)"

    Предложение А. Соколова.
    "объект [базы данных] [типа] DIRECTORY (каталог)"

    Комментарий А. Бачина.
    Ну, конечно!

    operator

    Вопрос М. Вольштейна.
    Как быть с "user-defined operator" – в глоссарии есть два "зеленых" варианта перевода – "операция" и "оператор". Если переводить как "оператор", то можно спутать со "statement" (особенно при переводе раздела "DROP OPERATOR statement")

    Контекст.

    1. Operators manipulate individual data items called operands or arguments. Operators are represented by special characters or by keywords. For example, the multiplication operator is represented by an asterisk (*). (SQL Reference)
    2. Like built-in operators, user-defined operators take a set of operands as input and return a result. However, you create them with the CREATE OPERATOR statement, and they are identified by names. They reside in the same namespace as tables, views, types, and standalone functions. (SQL Reference)
    3. In memory management, the term operator refers to a data flow operator, such as a sort, hash join, or bitmap merge. (Concepts)

    Мнение А. Соколова.
    Переводить нужно по контексту: "операция", "знак операции". Причем по словарям в определенных случаях термин "statement" является синонимом термина "operator", но, по моему, этот синоним использовать не стоит, так как всегда придется приводить контекст.

    Комментарий Ирека Абдуллина (irek@rdtex.ru).
    Я согласен, что "operator" – это "операция", "знак операции".

    Комментарий А. Бачина.
    Тогда давайте раз и навсегда закрепим термины:

    • Statement – предложение.
    • Clause – фраза.

    Резюме.
    Переводчиками практически повсеместно было принято решение: Statement – оператор, Clause – предложение.

    object materialized view

    Контекст.
    If a materialized view is based on an object table and is created using the OF type clause, then the materialized view is called an object materialized view. An object materialized view is structured in the same way as an object table.

    Предложение переводчика.
    "материализованное представление на основе объекта"

    Предложение А. Соколова.
    "объектное материализованное представление"

    Предложение А. Бачина.
    По моему лучше " материализованное представление на объектной таблице". Не намного длиннее, но предельно понятно.

    Комментарий М. Вольштейна.
    Последний термин вряд ли подходит:

    "If a materialized view that is based on an object table is created without using the OF type clause, then the materialized view is read-only and is not an object materialized view." (Oracle9i Advanced Replication)

    Предложение А. Майорова.
    На одно слово короче – "материализованное представление объектной таблицы".

    Предложение И. Абдуллина.
    Я отдаю предпочтение варианту: "объектное материализованное представление".

    Предложение А Бачина.
    К комментарию М. Вольштейна.

    Это предложение великолепно и понятно переводится:

    "Если материализованное представление на (именно НА) материализованной таблице создается без участия типа OF, то оно является исключительно read-only и не является собственно (вариант: истинным) материализованным представлением объектной таблицы.

    Я голосую за вариант А. Майорова.

    Резюме.
    Пример перевода из книги Oracle9i. Справочное руководство по языку SQL: "Предложение OF объектный_тип позволяет явно создавать объектное материализованное представление типа объектный_тип".

    Public database link

    Вопрос Юрия Хворостьянова (hvor@rdtex.ru).
    В глоссарии РДТЕХ встретился спорный термин, хотелось у вас уточнить.

    Public database link – публичная связь базы данных.

    Честно говоря, звучит двусмысленно. Люди, переводящие документацию, сомневаются, действительно ли так оно и задумывалось. Может быть лучше перевести как "общая связь"?

    А то еще в 10i придумают какой-нибудь PUBLIC ORACLE HOМЕ и придется им его переводить как "публичный дом Oracle". Это я, конечно, шучу. Но все-таки, посоветуйте как быть.

    Ответ А. Соколова.
    Конечно, некоторая интимная двусмысленность есть. Но в случае с другими переводами термина "public" ("общедоступный", "открытый" – ABBY Lingvo) также появляется некоторая двусмысленность, правда иного рода. В свое время мы так и писали "общедоступная", "общая", но при переводе возникали накладки с переводом других терминов, поэтому Ирек Абдуллин выступил с предложением: "public" – публичный, "private" – "приватный". Это предложение было принято коллегами и накладок при переводе стало значительно меньше. Нас же не смущает "публичная библиотека".

    Комментарий А. Майорова.
    Про public я затрудняюсь, но одно мелкое замечание. Мне кажется лучше database употреблять во множественном числе, что подчеркнет, что это связь между двумя базами: публичная связь баз данных.

    В английском, на сколько я понимаю, эта информация никак не проявляется ввиду особенностей грамматики, а в русском вполне уместна. И еще, хотя это уже явно запоздалый совет, поскольку link как связь переводится давно. Я бы лично предпочел "соединение". Связь это нечто более глобальное: почтовая связь, космическая связь, или модемная связь. Т.е. это как бы технология или еще круче – связь времен. А конкретный экземпляр/факт связи это канал или соединение.

    Комментарий А. Соколова.
    Предложение принимается: "… связь баз данных", так как в Глоссарии у нас с этим полная неразбериха. Я внесу соответствующие изменения в Глоссарий ИТИ. Однако переводчики и редакторы должны понимать, что в документации этот термин используется, как правило, не для обозначения собственно связи между базами данных, а как объект базы данных, создаваемый в локальной базе данных, который идентифицирует удаленную базу данных, путь связи с этой базой данных и (необязательно) имя пользователя и пароль. Поэтому перевод должен соответствовать правилам русского языка.

    О "соединении". Этот термин уже занят, так как во время инициирования связи с удаленной базой данных обязательно выполняется процедура соединения (идентификация, аутентификация).

    Комментарий А. Бачина.
    В лекциях я обычно использую термин "общесистемный":

    • "общесистемная" связь базы данных;
    • "общесистемный" сегмент отката;
    • "общесистемный" синоним.

    Вопрос А. Соколова к А. Бачину.
    А как тогда переводить "private"?

    Ответ А. Бачина.
    В этом случае, по моему, или надо подчеркивать "связь {или "синоним"}, принадлежащая(ий) пользователю", или просто умалчивать, когда в тексте на этом не делается акцент.

    Сложнее с "public / private rollback segment". В этом случае (для АБД только, остальным без разницы, они об этом даже не знают) обязательно надо различать "общесистемный" для кластерных баз данных и "частный" – для одноэкземплярных. Хотя и в них часто вместо просто "rollback segment" создают и используют "public rollback segment" – его, видете ли, проще эксплуатировать. Не надо прописывать в файле init.ora для автоматического перевода в online-режим.

    Комментарий И. Абдуллина.
    Словарь Abbyy Lingvo (Компьютерный англ.) дает следующие варианты для public и private:

    ООП публичный, общедоступный, открытый (в общем смысле – доступный для всеобщего использования; в языке C++ – спецификация члена класса, который может быть использован любым пользователем класса)

    ООП приватный, частный (в C++ – спецификация члена класса, использование которого ограничено классом, в котором он определен, а также друзьями (friend) этого класса)

    Таким образом, следует оставить первые варианты:

    • public – публичный
    • private – приватный

    Думаю, эти значения можно использовать не только в контексте ООП.

    Комментарий А. Бачина.
    Я и не спорю, что надо использовать термины "публичый", приватный", "частный". Я только хотел сказать, что когда "публичный" звучит двусмысленно (для начинающих слушателей), то я использую слово "общесистемный".

    table function

    Контекст.
    Table functions return a collection type instance representing rows in a table. They can be queried like a table by calling the function in the FROM clause of a query, enclosed by the TABLE keyword. (PL/SQL User’s Guide and Reference)

    Предложение переводчика.
    "табличная функция"

    Резюме.
    Предложение принимается.

    Вопрос М. Вольштейна.
    Слово "table" в терминах "table function" и "table collection" имеет одно и то же значение. Может, тогда следует переводить "table collection" как "табличная коллекция"?

    Предложение Н. Суренской.
    "varray collection" – "коллекция типа Varray", "коллекция типа массива переменной размерности".

    "table collection" – "табличная коллекция"

    Перевод VARRAY – как массив мне не нравится. Неточно.

    Комментарий И. Абдуллина.
    Насколько я понимаю, "table collection" – это не коллекция типа вложенная таблица, а именно "табличная коллекция", используемая вместо таблицы, например, когда нужно обновить столбец-вложенную таблицу или столбец-массив:

    UPDATE TABLE(SELECT h.people FROM hr_info h
       WHERE h.department_id = 280) p
       SET p.salary = p.salary + 100;

    Другими словами, "табличная коллекция" может быть и вложенной таблицей, и массивом (VARRAY). Кстати, VARRAY я всегда переводил как "массив" – вроде бы ничем особенно не отличается.

    Комментарий А. Соколова.
    Я просмотрел документацию 9i и обнаружил словосочетание "table collection" в 8 главах:

    1. A SELECT query can be issued against instances of VARRAY and Nested table collection types using SQL THE or TABLE operator and individual elements can be accessed as rows. If those collection types are having object type as its element type, individual attributes of the object type represents fields of a row. If an object type X having attributes of a, b, and c, and the element type of the collection is object type X then the SELECT query on this collection returns with a, b, and c fields. (Oracle Objects for OLE)
    2. The table_collection_expression lets you inform Oracle that the value of collection_expression should be treated as a table for purposes of query and DML operations. The collection_expression can be a subquery, a column, a function, or a collection constructor. Regardless of its form, it must return a collection value (that is, a value whose type is nested table or varray). This process of extracting the elements of a collection is called collection unnesting. (Oracle9i SQL Reference)
    3. Restrictions on multitable inserts: You cannot specify a table collection expression when performing a multitable insert. (Oracle9i SQL Reference)
    4. Restrictions on set operators: You cannot use these operators in SELECT statements containing TABLE collection expressions. (Oracle9i SQL Reference)
    5. Line 8 indicates that the nested table, LineItemList_ntab, is returned in the locator form when retrieved. If you do not specify LOCATOR, the default is VALUE, which causes the entire nested table to be returned instead of just a locator to it. If a nested table collection contains many elements, it is inefficient to return the entire nested table whenever the containing row object or the column is selected. (Oracle9i Application Developer's Guide – Object-Relational Features)
    6. The following example creates a multilevel collection type that is a nested table of nested tables. The example models a system of stars in which each star has a nested table collection of the planets revolving around it, and each planet has a nested table collection of its satellites. (Oracle9i Application Developer's Guide – Object-Relational Features)
    7. A nested table type column or object table attribute requires a storage table where rows for all nested tables in the column are stored. Similarly with a multilevel nested table collection of nested tables: the inner set of nested tables requires a storage table just as the outer set does. You specify one by appending a second nested-table storage clause. (Oracle9i Application Developer's Guide – Object-Relational Features)

    Предложение Александра Усачева (usachev@rdtex.ru).

    • "VARRAY" – "массив переменной длины"
    • "collection" – "сборная конструкция"

    Предложение А. Соколова.

    • "varray" – "массив переменной длины";
    • "collection" – "коллекция" – этот термин достаточно устоялся.

    Комментарий А. Майорова.
    Мне не очень нравится использование слов с устоявшейся семантикой в новых значениях. Равно как и "устоявшиеся термины" типа "коллекция", "висящий указатель" – все это кальки, возникшие как результат овладения широкими кругами программистов английским языком -:).

    "Табличная функция" в данном контексте звучит странно. Табличная функция для выпускника средней школы, коим я являюсь, – функция, значения которой затабулированы, т.е. можно открыть справочник и посмотреть чему равно значение. Я бы предложил термин "табличнообразная функция".

    Тоже и с "collection". Коллекция – по-русски прежде всего собрание чего-то редкого, исключительного. В нашем случае, мне кажется, надо разделять два значения "collection" – "как набор/совокупность данных", и как "тип данных", представляющих данные в виде определенной структуры. В первом случае, я бы переводил как "набор данных", а во втором как "контейнер"

    Тогда: "Table functions return a collection type instance representing rows in a table. They can be queried like a table by calling the function in the FROM clause of a query, enclosed by the TABLE keyword. (PL/SQL User’s Guide and Reference)"

    Звучит следущим образом: "Табличнообразные функции возвращают контейнер, имитирующий набор строк в таблице. Подобно таблицам к ним можно обращаться с запросами ..."

    "varray" – "массив переменной длины" -это хорошо.

    Комментарий А. Соколова.
    Да, термин "табличная функция" выбран нами неудачно, но и "табличнообразная функция" не представляет собой удачный вариант. Нужны другие предложения.

    Термин "коллекция" достаточно прочно вошел в документацию по ООП и как "набор/совокупность данных" и как "тип-коллекция" (пишется .через дефис). Поэтому изобретать новые термины нет смысла. В документации Oracle термин "collection" имеет несколько значений (см., например, Руководство по оптимизации производительности) – здесь есть над чем подумать.

    Комментарий А. Майорова.
    "Контейнер" не выдуманный термин. И в ООП, по крайней мере англоязычном, применяется наряду с collection. В большинстве руководств по STL map, array, list ... называются контейнерами: "A container is an STL template class that manages a sequence of elements (VC++ help)".

    "Collection": "An object that contains zero or more objects of the same class. The CDO Library supports large collections and small collections. The CDO Rendering Library uses only small collections. Also referred to as a collection object or an object collection. See also container object."

    "Container object": "An object that contains a collection of objects of one or more related classes."

    Я предложил "контейнер", поскольку, как мне кажется, по-русски это звучит более нейтрально нежели "коллекция".

    Комментарий М. Р. Когаловского.
    Термин "коллекция" уже десять лет назад был введен в стандарте объектных баз данных ODMG и, соответственно, в русскоязычных публикациях об этой модели. Поэтому уже поздно придумывать ему замену. Коллекция понимается в этой и других объектных моделях как значение данных, представляющее собой совокупность (множество, мультимножество, список, последовательность и т.п.) значений данных одного типа. Если я не ошибаюсь, термин "контейнер" в некоторых объектных моделях обозначает значение данных, являющееся совокупностью значений не обязательно одного типа. В этом отличие контейнера от коллекции.

    Комментарий А. Соколова.
    Термин "container" широко используется в продуктах корпорации Oracle, но с другим значением, отличающимся от предложения Андрея. Например, в Oracle9iAS:

    "A component that contains other components, such as a servlet. A container executes and manages a servlet. A container is either part of or associated with and used by a Web server. When a client HTTP request calls a servlet, the Web server passes the HTTP request to the container. The container translates the HTTP request into a Java method invocation and then passes the request to the servlet."

    Определение в ABBY Lingvo: "контейнер ( в широком смысле – объект или приложение, содержащие другие объекты ) , "container application" , "OLE container".

    Поэтому замена термина "коллекция" на "контейнер" неприемлема.

    Резюме.
    "табличная функция" Пример перевода из книги Oracle9i. Справочное руководство по языку PL/SQL: "Табличные функции возвращают коллекцию строк, к которой можно обращаться, как к физической таблице базы данных и которую можно присвоить переменной PL/SQL типа “коллекция” (такой коллекцией строк может быть вложенная таблица или массив)".

    Комментарий М. Р. Когаловского.
    Странное высказывание. Коллекция – это не тип. Это – значение данных, которое может иметь один из нескольких типов – в случае Oracle – Nested Table или VARRAY.

    Комментарий А. Соколова.
    Может более удачным было бы вместо переменной PL/SQL типа “коллекция” написать переменной PL/SQL типа данных “коллекция” или переменной-коллекции PL/SQL.

    tie values

    Контекст.
    CUME_DIST calculates the cumulative distribution of a value in a group of values. The range of values returned by CUME_DIST is >0 to <=1. tie values always evaluate to the same cumulative distribution value.

    Предложение и комментарий переводчика.
    "строки c одинаковыми значениями критерия упорядочения " (tie здесь используется в смысле "ничья" (т.к. эти элементы нельзя упорядочить))

    Комментарий Виктора Сусойкина (susoikin@rdtex.ru).
    На мой взгляд, перевод вполне корректный по смыслу.

    Резюме.
    "одинаковые значения критерия ранжирования" Пример перевода из книги Oracle9i. Справочное руководство по языку SQL: "Функция CUME_DIST вычисляет значение кумулятивного распределения значения в группе значений. Значения, возвращаемые функцией CUME_DIST, лежат в диапазоне от >0 до <=1. Одинаковые значения критерия ранжирования всегда приводят к вычислению одного и того же значения интегральной функции распределения".

    dense rank

    Контекст.
    In case of ~, the largest rank value is the number of unique values returned by the query. Rank values are not skipped in the event of ties. Rows with equal values for the ranking criteria receive the same rank.

    Предложение и комментарий переводчика.
    "плотный" ранг, ранг без пропусков (Пусть есть 3 значения: 3,3,5, сортируемые по возрастанию. Тогда у двух значений "3" будет ранг "1", а у "5" – "2" (а не "3", как в обычном случае)).

    Комментарий В. Сусойкина.
    А "dense rank" я так и переводил "плотное ранжирование".

    Резюме.
    "плотное ранжирование"

    Продолжение следует.

  • E-mail this page