Order by sql синтаксис. Работа с базой данных. Сортировка данных в результате SQL запроса. Альтернативные методы сортировки
Следующий цикл:
Шаг 8. Простая сортировка
Если результат вашего SQL запроса должен стать исходным материалом некоего отчета, то вопрос сортировки в нем данных становится чрезвычайно важным, поскольку человеку, читающему неотсортированный должным образом отчет очень сложно быстро найти в нем нужную именно ему часть информации. Для сортировки данных по колонкам результата запроса (в нашем случае - по полям таблицы) в SQL используется ключевое слово ORDER BY. Пример самой простой сортировки приведен ниже. За основу взят запрос из шага 2: “Запрос с простым критерием отбора”. Сортируем сотрудников по полю S_NAME (Ф.И.О.).
SELECT S_NAME, S_EXPERIENCE FROM D_STAFF WHERE S_EXPERIENCE
Сортировка результата SQL запроса по одному полю.
Шаг 9. Сложная сортировка
Часто и даже практически всегда необходимо отсортировать данные более чем по одной колонке и не всегда в порядке возрастания. Синтаксис SQL предполагает после ключевого слова ORDER BY список колонок, разделенных запятой, а также, способ сортировки для каждой колонки: в порядке возрастания значений - ASC или порядке их убывания - DESC. В приведенном ниже примере мы показываем записи уже обо всех сотрудниках в порядке убывания их стажа. Сотрудников с одинаковым стажем сортируем в алфавитном порядке.
SELECT S_EXPERIENCE, S_NAME FROM D_STAFF ORDER BY S_EXPERIENCE DESC, S_NAME ASC
Сортировка результата SQL запроса по двум полям.
Довольно часто обратный порядок сортировки используют с колонками типа [дата]. Если дата хранит, например, дату занесения информации, то при обратной сортировке в самом начале списка оказываются те записи, которые были добавлены недавно относительно остальных. В случае если запрос извлекает из базы данных анонсы новостей, то мы получаем список анонсов, отсортированных в порядке убывания их актуальности, что может быть крайне полезным, поскольку читают анонсы обычно сверху вниз, да и на новостных сайтах показывают их не все, а только несколько наиболее “свежих”.
Нередко возникает необходимость вывести результат запроса в определённом порядке, например, по алфавиту. Для этого в СУБД существует специальная функция на языке SQL - сортировка. При этом программист может выбрать, по каким полям и в каком порядке она будет происходить, чтобы добиться желаемого результата, не применяя серьёзных навыков программирования.
Что такое сортировка в базе данных?
Работа с базами данных постоянно связана с большим объёмом информации, которой необходимо определять порядок. В настоящее время существует целый ряд СУБД, имеющий широкий спектр функций, самыми популярными из которых являются Oracle и MS SQL. Сортировка информации, как одна из главных процедур в работе с БД, обеспечивается специальной встроенной функцией в каждой из них.
Ранжирование данных позволяет упростить процесс поиска, а также в некоторых случаях помогает решить некоторые задачи или оптимизировать работу программы. SQL-сортировка производится по отдельно выбранному полю, а при необходимости, в случае наличия одинаковых значений в элементах этого поля, можно указать дополнительные параметры, определяющие расположение строк.
Команда сортировки
SQL-сортировка в базе данных обеспечивается путём использования функции ORDER BY. Так, при выводе информации из базы данных, после указания столбцов и таблиц из которых будет произведено считывание, в запросе необходимо указать команду сортировки, после чего определить поле или поля, по которым будет производиться сортировка.
Например, если из таблицы People необходимо получить данные из полей Name и Age, при этом выведя результат в алфавитном порядке по столбцу Name, то это поможет сделать следующий запрос: SELECT Name, Age FROM People ORDER BY Name.
Как задать порядок сортировки?
Современные условия ставят перед программистами различные задачи, и порой необходимо предопределить, в каком порядке будет выведен результат - по убыванию или возрастанию, по алфавиту или в обратном порядке? И для этого на языке SQL порядок сортировки определяется добавлением ключевого слова в запрос. После выбора полей и таблиц, из которых будет получена желаемая информация, необходимо добавить ORDER BY, после чего указать имя столбца, по которому необходимо произвести сортировку.
Для получения обратного порядка необходимо после имени указать параметр DESC. В случае если упорядочить элементы необходимо по двум и более критериям, то столбцы указываются через запятую, а приоритет при ранжировке будет отдан тому полю, которое идет в списке первым. Стоит отметить, что выстраивание элементов в обратном порядке параметр DESC предусматривает лишь по одному полю, после названия которого указано это ключевое слово, поэтому при необходимости его нужно указать во всех выбранных столбцах.
Альтернативные методы сортировки
В случае отсутствия возможности использования встроенной функции SQL-сортировки, можно написать один из известных алгоритмов. При необходимости достижения самого быстрого упорядочивания элементов, стоит применить метод основанный на половинном разбивании массива элементов. Большой популярностью также обладают способы ранжирования "пузырьком", в котором два соседних элемента меняются местами в случае неверного расположения, "пирамидальная сортировка", отправляющая наибольший элемент в конец списка, а также "сортировка вставками", предопределяющая местоположение каждого элемента по очереди.
Собственноручное написание алгоритма не позволит существенно увеличить скорость сортировки, однако, поспособствует развитию навыков программирования, а также позволит модифицировать процесс, подстроив схему ранжирования под определённую базу данных для повышения эффективности работы программы.
В будущем нам может понадобиться сортировать нашу выборку - в алфавитном порядке для текста или по возрастанию/убыванию - для цифровых значений. Для таких целей в SQL есть специальный оператор ORDER BY .
1. Сортировка выбранных данных.
Давайте всю нашу таблицу посортируем по сумме реализации продукции, а именно по столбцу Amount .
SELECT * FROM Sumproduct ORDER BY Amount
Видим, что запрос посортировал записи по возрастанию в поле Amount . Обязательно нужно соблюдать последовательность расположения операторов, т.е. оператор ORDER BY должен идти в самом конце запроса. В противном случае будет получено сообщение об ошибке.
Также особенностью оператора ORDER BY является то, что он может сортировать данные по полю, которого мы не выбирали в запросе, то есть достаточно, чтобы оно вообще было в БД.
2. Сортировка по нескольким полям.
Теперь посортируем наш пример дополнительно за еще одним полем. Пусть это будет поле City , которое отображает место реализации продукции.
SELECT * FROM Sumproduct ORDER BY Amount, City
Очередность сортировки будет зависеть от порядка расположения полей в запросе. То есть, в нашем случае сначала данные будут рассортированы по колонке Amount , а затем по City .
3. Направление сортировки.
Несмотря на то, что по умолчанию оператор ORDER BY сортирует по возрастанию, мы можем также прописать сортировки значений по убыванию. Для этого в конце каждого поля проставляем оператор DESC (что является сокращением от слова DESCENDING).
SELECT * FROM Sumproduct ORDER BY Amount DESC , City
В данном примере, значение в поле Amount были посортированы по убыванию, а в поле City - по возрастанию. Оператор DESC применяется только для одного столбца, поэтому при необходимости его нужно прописывать после каждого поля, которое принимает участие в сортировке.
Примечание:
Во всех статьях текущей категории уроков по SQL используются примеры и задачи, основанные на учебной базе данных.
Согласно первой нормальной форме реляционных баз данных, порядок строк в таблицах не должен иметь значения. Но на практике часто требуется отсортировать информацию перед выводом на экран.
За упорядочивание строк, выгружаемых в SQL-запросе, отвечает предложение ORDER BY. Оно располагается в самом конце запроса:
SELECT <Перечень столбцов> FROM <Перечень таблиц> ORDER BY <Условие сортировки>
В условии сортировки указываются столбцы, по которым будут упорядочены полученные строки таблицы:
ORDER BY col1, col2
Порядок сортировки в SQL
Возможны 2 варианта сортировки: по возрастанию и по убыванию. Для указания типа сортировки в запросе после названия столбца указывается ключевое слово ASC (ascending) или DESC (descending), которые определяют возрастающий либо убывающий порядок соответственно. По умолчанию используется тип ASC:
ORDER BY col1 -- следующее предложение будет равнозначным ORDER BY col1 ACS
Также возможно указать разный порядок для разных столбцов:
ORDER BY col1 DESC, col2 ASC
Для закрепления материала решите задачу на учебной БД:
Необходимо получить список идентификаторов сотрудников, отсортированный по группам в порядке возрастания и дате найма "от новых к старым".
SELECT id, Группа, Дата_найма FROM Сотрудники ORDER BY Группа, Дата_найма DESC
Пополним синтаксис оператора SELECT предложением ORDER BY (вертикальная черта означает необходимость выбора одного из вариантов):
SELECT [Имя_таблицы.]Имя_столбца[, [Имя_таблицы.]Имя_столбца2 …] FROM [[Имя_базы_данных.]Имя_Схемы.]Имя_таблицы Имя_столбца [, [Имя_таблицы.]Имя_столбца2 …]]
- Вперёд >
Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы мы могли развивать его дальше.