Пропозиція ORDER BY. Сортування SQL – Пропозиція ORDER BY Pl 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- Сортування. При цьому програміст може вибрати, за якими полями та в якому порядку вона відбуватиметься, щоб досягти бажаного результату, не застосовуючи серйозних навичок програмування.

Що таке сортування у базі даних?

p align="justify"> Робота з базами даних постійно пов'язана з великим обсягом інформації, якої необхідно визначати порядок. В даний час існує цілий рядСУБД, що має широкий спектр функцій, найпопулярнішими з яких є 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 використовуються приклади і завдання, засновані на навчальній базі даних.

Згідно з першою нормальною формою реляційних базданих, порядок рядків у таблицях не повинен мати значення. Але практично часто потрібно відсортувати інформацію перед виведенням на екран.

За впорядкування рядків, що вивантажуються у 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 [[Имя_базы_данных.]Имя_Схемы.]Имя_таблицы Имя_столбца [, [Имя_таблицы]]Имя_таблицы.

  • Вперед >

Якщо матеріали office-menu.ru допомогли Вам, то підтримайте, будь ласка, проект, щоб я міг розвивати його далі.

Пропозиція ORDER BY в Access сортує записи, повернені запитом, за зростанням або зменшенням значень вказаного поля (полів).

Синтаксис

SELECT список_полів
FROM таблиця
WHERE умова_відбору
[, поле2 ][, ...]]]

Інструкція SELECT, що містить пропозицію ORDER BY, включає наступні елементи:

Зауваження

Пропозиція ORDER BY не є обов'язковою. Його слід використовувати, коли необхідно відобразити дані у відсортованому вигляді.

За умовчанням застосовується порядок сортування за зростанням (від А до Я, від 0 до 9). У двох наведених нижче прикладах показано сортування імен співробітників на прізвища.

SELECT LastName, FirstName
FROM Employees
ORDER BY LastName;
SELECT LastName, FirstName
FROM Employees
ORDER BY LastName ASC;

Щоб виконати сортування за спаданням (від Я до А, від 9 до 0), додайте зарезервоване слово DESC наприкінці кожного поля, яким ви хочете відсортувати записи. У прикладі нижче виконується сортування прізвищ співробітників у порядку зменшення заробітної плати.

SELECT LastName, Salary
FROM Employees
ORDER BY Salary DESC, LastName;

Якщо в ORDER BY вказати поле, яке містить дані типу Memo або об'єкти OLE, виникне помилка. Ядро СУБД Microsoft Accessне підтримує сортування поля цих типів.

Пропозиція ORDER BY зазвичай є останнім елементом в інструкції SQL.

У пропозицію ORDER BY можна містити додаткові поля. Спочатку записи сортуються за полем, зазначеним у пропозиції ORDER BY першим. Потім для записів з однаковими значеннями першого поля виконується сортування полем, зазначеним другим, і т.д.

При вибірці даних буває важливо отримати їх у певному упорядкованому вигляді. Сортування може бути виконане за будь-якими полями з будь-яким типом даних. Це може бути сортування за зростанням або спаданням для числових полів. Для символьних (текстових) полів це може бути сортування в алфавітному порядку, хоча по суті воно так само є сортуванням за зростанням або зменшенням. Вона так само може бути виконана в будь-яких напрямках – від А до Я і навпаки від Я до А.

Суть процесу сортування полягає у приведенні послідовності до певного порядку. Докладніше про сортування можна дізнатися у статті "Алгоритми сортування" Наприклад, сортування довільної числової послідовності за зростанням:

2, 4, 1, 5, 9

має призвести до впорядкованої послідовності:

1, 2, 4, 5, 6

Аналогічно, при сортуванні за зростанням рядкових значень:

Іванов Іван, Петров Петро, ​​Іванов Андрій

результат має бути:

Іванов Андрій, Іванов Іван, Петров Петро

Тут рядок "Іванов Андрій" перейшов у початок, оскільки порівняння рядків проводиться посимвольно. Обидва рядки починаються з однакових символів "Іванів". Оскільки символ "А" у слові "Андрій" йде раніше в алфавіті, ніж символ "І" у слові "Іван", то цей рядок буде поставлено раніше.

Сортування у запиті SQL

Для сортування в рядок запиту потрібно додати команду ORDER BY. Після цієї команди вказується поле, яким проводиться сортування.

Для прикладів використовуємо таблицю товарів goods:

num
(Номер товару)
title
(назва)
price
(ціна)
1 Мандарин50
2 Кавун120
3 Ананас80
4 Банан40

Дані тут уже впорядковані стовпцем "num". Тепер збудуємо запит, який виведе таблицю з товарами, впорядкованими в алфавітному порядку:

SELECT * FROM goods ORDER BY title

SELECT * FROM goods – вказує вибрати всі поля з таблиці goods;

ORDER BY – команда сортування;

title – стовпець, яким буде виконуватися сортування.

Результат виконання такого запиту наступний:

num title price
3 Ананас80
2 Кавун120
4 Банан40
1 Мандарин50

Також можна виконати сортування для будь-якого з полів таблиці.

Напрямок сортування

За замовчуванням команда ORDER BY сортує за зростанням. Щоб керувати напрямом сортування вручну, після імені стовпця вказується ключове слово ASC (за зростанням) або DESC (за спаданням). Таким чином, щоб вивести нашу таблицю в порядку зменшення цін, потрібно задати запит так:

SELECT * FROM goods ORDER BY price DESC

Сортування за зростанням ціни буде:

SELECT * FROM goods ORDER BY price ASC

Сортування за кількома полями

SQL дозволяє сортувати відразу по кількох полях. Для цього після команди ORDER BY необхідні поля вказуються через кому. Порядок в результаті запиту налаштовуватиметься в тій же черговості, в якій вказані поля сортування.

column1 column2 column3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 a
1 3 a
3 4 a

Відсортуємо таблицю за такими правилами:

SELECT * FROM mytable ORDER BY column1 ASC, column2 DESC, column3 ASC

Тобто. перший стовпець за зростанням, другий за спаданням, третій знову за зростанням. Запит упорядкує рядки за першим стовпцем, потім, не руйнуючи першого правила, за другим стовпцем. Потім, так само, не порушуючи існуючих правил, за третім. В результаті вийде такий набір даних:

column1 column2 column3
1 3 a
1 3 c
1 2 a
2 2 b
2 1 b
3 1 a
3 1 c

Порядок команди ORDER BY у запиті

Сортування рядків найчастіше проводиться разом із умовою вибірку даних. Команда ORDER BY ставиться після умови вибірки WHERE. Наприклад, вибираємо товари з ціною менше 100 рублів, упорядкувавши за назвою в алфавітному порядку:

SELECT * FROM goods WHERE price 100 ORDER BY price ASC