что такое order by в sql

Пункт ORDER BY (Microsoft Access SQL)

Область применения: Access 2013 | Access 2016

Сортировать итоговые записи запроса на указанном поле или полях в порядке восходящего или убывания.

Синтаксис

В заявлении SELECT, содержащего пункт ORDER BY, есть такие части:

PartОписание
fieldlistИмя поля или полей, которые будут извлечены вместе с любыми псевдонимами с именами полей, SQL совокупными функциями, предикатами выбора(ALL, DISTINCT, DISTINCTROW или TOP)или другими вариантами заявления SELECT.
таблицаИмя таблицы, из которой извлекаются записи. Дополнительные сведения см. в статье From clause.
selectcriteriaКритерии выбора. Если в заявлении содержится пункт WHERE, то движок базы данных Microsoft Access заказывает значения после применения условий WHERE к записям.
поле1, поле2Имена полей для сортировки записей.

Примечания

ORDER BY является необязательным. Однако если вы хотите, чтобы данные отображались в сортировке, необходимо использовать ORDER BY.

По умолчанию порядок сортировки возрастает (A для Z, 0 до 9). В обоих следующих примерах сортировать имена сотрудников в порядке фамилии:

Чтобы сортировать в порядке убывания (Z к A, 9 к 0), добавьте зарезервированное слово DESC в конец каждого поля, которое необходимо сортировать в порядке убывания. В следующем примере выбирается заработная плата и сортироваться в порядке убывания:

При указании поля, содержащего данные объекта Memo или OLE в пункте ORDER BY, возникает ошибка. Двигатель базы данных Microsoft Jet не сортировать поля этих типов.

ORDER BY обычно является последним элементом в SQL.

Дополнительные поля можно включить в пункт ORDER BY. Сначала записи сортируются первым полем, перечисленным после ORDER BY. Записи, которые имеют равные значения в этом поле, затем сортируются по значению во втором перечислены поле и так далее.

Пример

В SQL, показанной в следующем примере, используется пункт ORDER BY для сортировки записей по фамилии в порядке убывания (Z-A). В этом примере выполняется вызов процедуры EnumFields, которую можно найти в примере для оператора SELECT.

Об участниках

Ссылка предоставлена что такое order by в sql. Смотреть фото что такое order by в sql. Смотреть картинку что такое order by в sql. Картинка про что такое order by в sql. Фото что такое order by в sqlсообществом UtterAccess.

UtterAccess — это премиальный вики-портал и форум, посвященный Microsoft Access.

См. также

Поддержка и обратная связь

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

Источник

SELECT — предложение ORDER BY (Transact-SQL)

Сортирует данные, возвращенные запросом в SQL Server. Это предложение используется для следующих целей:

Упорядочение результирующего набора запроса по заданному списку столбцов и (дополнительно) ограничение числа возвращаемых строк указанным диапазоном. Порядок, в котором строки возвращаются в результирующем наборе, не гарантируется, если не указано предложение ORDER BY.

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

что такое order by в sql. Смотреть фото что такое order by в sql. Смотреть картинку что такое order by в sql. Картинка про что такое order by в sql. Фото что такое order by в sqlСинтаксические обозначения в Transact-SQL

ORDER BY не поддерживается в инструкциях SELECT/INTO или CREATE TABLE AS SELECT (CTAS) в Azure Synapse Analytics или Система платформы аналитики (PDW).

Синтаксис

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

order_by_expression
Указывает столбец или выражение, по которому производится сортировка результирующего набора запроса. Столбец сортировки может быть указан с помощью имени или псевдонима столбца или неотрицательного целого числа, представляющего позицию столбца в списке выбора.

Можно указать несколько столбцов сортировки. Имена столбцов должны быть уникальными. Последовательность столбцов сортировки в предложении ORDER BY определяет организацию упорядоченного результирующего набора. Иными словами, результирующий набор сортируется по первому столбцу, затем упорядоченный список сортируется по второму и т. д.

Имена столбцов, на которые содержатся ссылки в предложении ORDER BY, должны однозначно соответствовать столбцу или псевдониму столбца в списке выбора либо столбцу, определенному в таблице, указанной в предложении FROM. Если предложение ORDER BY ссылается на псевдоним столбца в списке выбора, псевдоним должен использоваться отдельно, а не как часть выражения в предложении ORDER BY, например:

COLLATE collation_name
Указывает, что операция ORDER BY должна выполняться в соответствии с параметрами сортировки, указанными в аргументе collation_name, но не в соответствии с параметрами сортировки столбца, определенными в таблице или представлении. Аргументом collation_name может быть либо имя параметров сортировки Windows, либо имя параметров сортировки SQL. Дополнительные сведения см. в статье Collation and Unicode Support. Аргумент COLLATE применяется только к столбцам типа char, varchar, nchar и nvarchar.

ASC | DESC
Указывает порядок сортировки значений в указанном столбце — по возрастанию или по убыванию. Значение ASC сортирует от низких значений к высоким. Значение DESC сортирует от высоких значений к низким. Порядок сортировки по умолчанию — ASC. Значения NULL рассматриваются как минимально возможные значения.

OFFSET < integer_constant | offset_row_count_expression > < ROW | ROWS >
Указывает число сток, которые необходимо пропустить, прежде чем будет начат возврат строк из выражения запроса. Это значение может быть целочисленной константой или выражением, значение которого больше нуля или равно нулю.

Применимо к: SQL Server 2012 (11.x) и выше, База данных SQL Azure.

offset_row_count_expression может быть переменной, параметром или вложенным запросом, возвращающим скалярную константу. При использовании вложенного запроса он не должен ссылаться на какие-либо столбцы, определенные в области внешнего запроса. Иными словами, он не может коррелировать с внешним запросом.

ROW и ROWS являются синонимами и оставлены для совместимости со стандартом ANSI.

В плане выполнения запроса значение смещения строки отображается в атрибуте Offset оператора запроса TOP.

FETCH < FIRST | NEXT >< integer_constant | fetch_row_count_expression > < ROW | ROWS >ONLY
Указывает число строк, возвращаемых после обработки предложения OFFSET. Это значение может быть целочисленной константой или выражением, значение которого больше единицы или равно единице.

Применимо к: SQL Server 2012 (11.x) и выше, а также База данных SQL Azure.

fetch_row_count_expression может быть переменной, параметром или вложенным запросом, возвращающим скалярную константу. При использовании вложенного запроса он не должен ссылаться на какие-либо столбцы, определенные в области внешнего запроса. Иными словами, он не может коррелировать с внешним запросом.

FIRST и NEXT являются синонимами и предусмотрены для совместимости со стандартом ANSI.

ROW и ROWS являются синонимами и оставлены для совместимости со стандартом ANSI.

В плане выполнения запроса значение смещения строки отображается в атрибуте Rows или Top оператора запроса TOP.

Рекомендации

Избегайте указания столбцов в предложении ORDER BY по их порядковому номеру в списке выбора. Например, хотя инструкция SELECT ProductID, Name FROM Production.Production ORDER BY 2 верна, она будет не очень понятна другим пользователям по сравнению с тем случаем, когда столбцы указаны по именам. Кроме того, если список выбора изменится, в частности изменится порядок столбца или будут добавлены новые столбцы, то это потребует изменения предложения ORDER BY во избежание непредвиденных результатов.

В инструкции SELECT TOP (N) всегда указывайте предложение ORDER BY. Это единственный способ предсказуемым образом отметить строки, которые были обработаны предложением TOP. Дополнительные сведения см. в разделе TOP (Transact-SQL).

Совместимость

При использовании в инструкции SELECT. INTO или INSERT. SELECT предложения ORDER BY для вставки строк из другого источника вставка строк в указанном порядке не гарантируется.

Использование OFFSET и FETCH в представлении не приведет к изменению его свойства Updateability.

Ограничения

Нет ограничения на число столбцов в предложении ORDER BY, однако общий размер столбцов, перечисленных в нем, не может превышать 8060 байт.

Столбцы типа ntext, text, image, geography, geometry и xml не могут использоваться в предложении ORDER BY.

Нельзя указывать целое число или константу, если аргумент order_by_expression присутствует в ранжирующей функции. Дополнительные сведения см. в статье Предложение OVER (Transact-SQL).

Если в качестве имени таблицы в предложении FROM используется псевдоним, то только псевдоним может быть использован для обозначения столбца этой таблицы в предложении ORDER BY.

Имена и псевдонимы столбцов, указанные в предложении ORDER BY, должны быть определены в списке выбора, если инструкция SELECT содержит одно из следующих предложений или операторов:

Кроме того, если в инструкцию входит оператор UNION, EXCEPT или INTERSECT, то имена и псевдонимы столбцов должны быть указаны в списке выбора первого (слева) запроса.

В запросе, содержащем оператор UNION, EXCEPT или INTERSECT, предложение ORDER BY допускается только в конце инструкции. Это ограничение применяется только при использовании операторов UNION, EXCEPT и INTERSECT в запросах верхнего уровня, но не во вложенных запросах. См подраздел «Примеры» ниже.

Предложение ORDER BY недопустимо в представлениях, встроенных функциях, производных таблицах и вложенных запросах, если также не указаны предложения TOP либо OFFSET и FETCH. В этих объектах предложение ORDER BY используется только для определения строк, возвращаемых предложением TOP или OFFSET и FETCH. Предложение ORDER BY не гарантирует упорядочивания результатов при запросе этих конструкций, если оно не указано в самом запросе.

Предложения OFFSET и FETCH не поддерживаются в индексированных представлениях и представлениях, определенных с предложением CHECK OPTION.

Предложения OFFSET и FETCH могут быть использованы в любом запросе, допускающем применение TOP и ORDER BY, со следующими ограничениями.

Предложение OVER не поддерживает OFFSET и FETCH.

Предложения OFFSET и FETCH не могут быть указаны прямо в инструкциях INSERT, UPDATE, MERGE и DELETE, но могут быть указаны во вложенных запросах, определяемых этими инструкциями. Например, в инструкции INSERT INTO SELECT предложения OFFSET и FETCH могут быть указаны в инструкции SELECT.

В запросе, содержащем оператор UNION, EXCEPT или INTERSECT, предложения OFFSET и FETCH могут быть указаны только в конечном запросе, который определяет порядок следования результатов запроса.

TOP нельзя сочетать с OFFSET и FETCH в одном выражении запроса (в той же области запроса).

Использование OFFSET и FETCH для ограничения числа возвращаемых строк

Для разбиения на страницы и ограничения числа строк, передаваемых клиентскому приложению, рекомендуется пользоваться предложениями OFFSET и FETCH, а не предложением TOP.

Применение в качестве решения для разбиения на страницы предложений OFFSET и FETCH потребует однократного выполнения запроса для каждой «страницы» данных, возвращаемых клиентскому приложению. Например, чтобы вернуть результаты запроса блоками по 10 строк, необходимо выполнить запрос для получения строк с 1 по 10, затем еще раз для получения строк с 11 по 20 и так далее. Каждый запрос выполняется независимо и никаким образом не связан с другими запросами. Это означает, что в отличие от использования курсора, где запрос выполняется всего один раз, а текущее состояние хранится на сервере, за отслеживание состояния отвечает клиентское приложение. Чтобы добиться стабильных результатов между запросами с предложениями OFFSET и FETCH, должны выполняться следующие условия.

Базовые данные, используемые запросом, должны быть неизменными. Иными словами, либо строки, обработанные запросом, не должны обновляться, либо все запросы страниц выполняемого запроса должны выполняться в одной транзакции, использующей моментальный снимок или сериализуемую изоляцию транзакции. Дополнительные сведения об уровнях изоляции транзакции см. в разделе SET TRANSACTION ISOLATION LEVEL (Transact-SQL).

Предложение ORDER BY содержит столбец или сочетание столбцов, которые гарантированно уникальны.

См. пример «Выполнение нескольких запросов в одной транзакции» в подразделе «Примеры» ниже в этом разделе.

Если согласованность планов выполнения важна для решения разбиения на страницы, подумайте над использованием указания запросов OPTIMIZE FOR для параметров OFFSET и FETCH. См. пункт «Указание выражений для значений OFFSET и FETCH» в подразделе «Примеры» ниже в этом разделе. Дополнительные сведения об OPTIMZE FOR см. в статье Указания запросов (Transact-SQL).

Примеры

КатегорияИспользуемые элементы синтаксиса
Основной синтаксисORDER BY
Указание порядка по возрастанию или по убываниюDESC • ASC
Указание параметров сортировкиCOLLATE
Указание условного порядкаCASE, выражение
Использование ORDER BY в ранжирующей функцииРанжирующие функции
Ограничение числа возвращаемых строкOFFSET • FETCH
Использование ORDER BY с UNION, EXCEPT и INTERSECTUNION

Основной синтаксис

В примерах этого раздела показана базовая функциональность предложения ORDER BY с использованием минимально необходимого синтаксиса.

A. Указание единственного столбца, определенного в списке выбора

Б. Указание столбца, не определенного в списке выбора

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

В. Указание псевдонима в качестве столбца сортировки

Г. Указание выражения в качестве столбца сортировки

В следующем примере в качестве столбца сортировки используется выражение. Выражение определено с использованием функции DATEPART, чтобы сортировать результирующий набор по году поступления сотрудника на работу.

Указание порядка по возрастанию или по убыванию

A. Указание порядка по убыванию

В следующем примере производится упорядочение результирующего набора по числовому столбцу ProductID в убывающем порядке.

Б. Указание порядка по возрастанию

В следующем примере производится упорядочение результирующего набора по столбцу Name в возрастающем порядке. Символьные значения сортируются в алфавитном порядке, а не в числовом. Иными словами, отсортированное значение 10 находится перед 2.

В. Указание порядка и по возрастанию, и по убыванию

Указание параметров сортировки

Следующий пример показывает, как задание параметров сортировки в предложении ORDER BY может изменить порядок, в котором возвращаются результаты запроса. Созданная таблица содержит столбец, определенный без учета регистра и параметров сортировки диакритических знаков. Вставленные значения имеют различные сочетания регистра и диакритических знаков. Поскольку параметры сортировки в предложении ORDER BY не заданы, первый запрос при упорядочении значений использует порядок сортировки столбца. Во втором запросе в предложении ORDER BY указаны параметры сортировки без учета регистра символов и диакритических знаков, поэтому строки возвращаются в другом порядке.

Указание условного порядка

Использование ORDER BY в ранжирующей функции

В следующем примере предложение ORDER BY используется в ранжирующих функциях ROW_NUMBER, RANK, DENSE_RANK и NTILE.

Ограничение числа возвращаемых строк

В следующих примерах предложения OFFSET и FETCH ограничивают число строк, возвращаемых запросом.

Применимо к: SQL Server 2012 (11.x) и выше, а также База данных SQL Azure.

A. Указание целочисленных констант в качестве значений OFFSET и FETCH

Б. Указание переменных в качестве значений OFFSET и FETCH

В. Указание выражений в качестве значений OFFSET и FETCH

Г. Указание вложенного запроса, возвращающего скалярную константу, в качестве значений OFFSET и FETCH

Д. Выполнение нескольких запросов в одной транзакции

В следующем примере показан один из методов реализации решения разбиения на страницы, который обеспечивает стабильные результаты, возвращаемые во всех запросах. Этот запрос выполняется в одной транзакции уровня изоляции моментального снимка, а столбец, указанный в предложении ORDER BY, гарантирует уникальность столбца.

Использование ORDER BY с UNION, EXCEPT и INTERSECT

Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)

В следующем примере демонстрируется упорядочение результирующего набора по числовому столбцу EmployeeKey в возрастающем порядке.

В следующем примере производится упорядочение результирующего набора по числовому столбцу EmployeeKey в убывающем порядке.

Источник

SQL запросы быстро. Часть 1

Введение

Язык SQL очень прочно влился в жизнь бизнес-аналитиков и требования к кандидатам благодаря простоте, удобству и распространенности. Из собственного опыта могу сказать, что наиболее часто SQL используется для формирования выгрузок, витрин (с последующим построением отчетов на основе этих витрин) и администрирования баз данных. И поскольку повседневная работа аналитика неизбежно связана с выгрузками данных и витринами, навык написания SQL запросов может стать фактором, из-за которого кандидат или получит преимущество, или будет отсеян. Печальная новость в том, что не каждый может рассчитывать получить его на студенческой скамье. Хорошая новость в том, что в изучении SQL нет ничего сложного, это быстро, а синтаксис запросов прост и понятен. Особенно это касается тех, кому уже доводилось сталкиваться с более сложными языками.

Обучение SQL запросам я разделил на три части. Эта часть посвящена базовому синтаксису, который используется в 80-90% случаев. Следующие две части будут посвящены подзапросам, Join’ам и специальным операторам. Цель гайдов: быстро и на практике отработать синтаксис SQL, чтобы добавить его к арсеналу навыков.

Практика

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

Кликнуть здесь

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

Структура sql-запросов

Общая структура запроса выглядит следующим образом:

Разберем структуру. Для удобства текущий изучаемый элемент в запроса выделяется CAPS’ом.

SELECT, FROM

SELECT, FROM — обязательные элементы запроса, которые определяют выбранные столбцы, их порядок и источник данных.

Выбрать все (обозначается как *) из таблицы Customers:

Выбрать столбцы CustomerID, CustomerName из таблицы Customers:

WHERE

WHERE — необязательный элемент запроса, который используется, когда нужно отфильтровать данные по нужному условию. Очень часто внутри элемента where используются IN / NOT IN для фильтрации столбца по нескольким значениям, AND / OR для фильтрации таблицы по нескольким столбцам.

Фильтрация по одному условию и одному значению:

Фильтрация по одному условию и нескольким значениям с применением IN (включение) или NOT IN (исключение):

Фильтрация по нескольким условиям с применением AND (выполняются все условия) или OR (выполняется хотя бы одно условие) и нескольким значениям:

GROUP BY

GROUP BY — необязательный элемент запроса, с помощью которого можно задать агрегацию по нужному столбцу (например, если нужно узнать какое количество клиентов живет в каждом из городов).

При использовании GROUP BY обязательно:

Группировка количества клиентов по стране и городу:

Группировка продаж по ID товара с разными агрегатными функциями: количество заказов с данным товаром и количество проданных штук товара:

Группировка продаж с фильтрацией исходной таблицы. В данном случае на выходе будет таблица с количеством клиентов по городам Германии:

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

HAVING

HAVING — необязательный элемент запроса, который отвечает за фильтрацию на уровне сгруппированных данных (по сути, WHERE, но только на уровень выше).

Фильтрация агрегированной таблицы с количеством клиентов по городам, в данном случае оставляем в выгрузке только те города, в которых не менее 5 клиентов:

В случае с переименованным столбцом внутри HAVING можно указать как и саму агрегирующую конструкцию count(CustomerID), так и новое название столбца number_of_clients:

Пример запроса, содержащего WHERE и HAVING. В данном запросе сначала фильтруется исходная таблица по пользователям, рассчитывается количество клиентов по городам и остаются только те города, где количество клиентов не менее 5:

ORDER BY

ORDER BY — необязательный элемент запроса, который отвечает за сортировку таблицы.

Простой пример сортировки по одному столбцу. В данном запросе осуществляется сортировка по городу, который указал клиент:

Осуществлять сортировку можно и по нескольким столбцам, в этом случае сортировка происходит по порядку указанных столбцов:

По умолчанию сортировка происходит по возрастанию для чисел и в алфавитном порядке для текстовых значений. Если нужна обратная сортировка, то в конструкции ORDER BY после названия столбца надо добавить DESC:

Обратная сортировка по одному столбцу и сортировка по умолчанию по второму:

JOIN — необязательный элемент, используется для объединения таблиц по ключу, который присутствует в обеих таблицах. Перед ключом ставится оператор ON.

Запрос, в котором соединяем таблицы Order и Customer по ключу CustomerID, при этом перед названиям столбца ключа добавляется название таблицы через точку:

Нередко может возникать ситуация, когда надо промэппить одну таблицу значениями из другой. В зависимости от задачи, могут использоваться разные типы присоединений. INNER JOIN — пересечение, RIGHT/LEFT JOIN для мэппинга одной таблицы знаениями из другой,

Внутри всего запроса JOIN встраивается после элемента from до элемента where, пример запроса:

Другие типы JOIN’ов можно увидеть на замечательной картинке ниже:

что такое order by в sql. Смотреть фото что такое order by в sql. Смотреть картинку что такое order by в sql. Картинка про что такое order by в sql. Фото что такое order by в sql
В следующей части подробнее поговорим о типах JOIN’ов и вложенных запросах.

При возникновении вопросов/пожеланий, всегда прошу обращаться!

Источник

Команда ORDER BY

Команда ORDER BY позволяет сортировать записи по определенному полю при выборе из базы данных.

Синтаксис

Сортировка по одному полю:

Можно сортировать не по одному, а по многим полям сразу:

По умолчанию будет сортировка, будто поставлено ASC :

Таблицы для примеров

таблица employees

id
айди
name
имя
age
возраст
salary
зарплата
1user123400
2user225500
3user323500
4user430900
5user527500
6user628900

Пример

Давайте получим все записи из таблицы и отсортируем их по возрастанию возраста:

SQL запрос выберет строки в следующем порядке:

id
айди
name
имя
age
возраст
salary
зарплата
1user123400
3user323500
2user225500
5user527500
6user628900
4user430900

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

Пример

Давайте теперь отсортируем записи по убыванию возраста:

SQL запрос выберет строки в следующем порядке:

id
айди
name
имя
age
возраст
salary
зарплата
4user430900
6user628900
5user527500
2user225500
1user123400
3user323500

Пример

Давайте теперь отсортируем записи одновременно по возрастанию возраста и по убыванию зарплаты.

SQL запрос выберет строки в следующем порядке:

id
айди
name
имя
age
возраст
salary
зарплата
3user323500
1user123400
2user225500
5user527500
6user628900
4user430900

Пример

Давайте при тех же условиях (т.е. сначала сортировка по возрасту) отсортируем по возрастанию зарплаты.

SQL запрос выберет строки в следующем порядке:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *