Поделиться через


Сортировка строк (визуальные инструменты для баз данных)

Область применения: SQL Server

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

Заметка

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

Существует несколько способов сортировки результатов запроса:

  • Строки можно упорядочить по возрастанию или убыванию

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

    SELECT *
    FROM titles
    ORDER BY price;
    

    С другой стороны, если вы хотите сначала упорядочить названия книг, начиная с самых дорогих, вы можете явно указать порядок от самого дорогого к самому дешевому. То есть вы указываете, что результирующих строк следует упорядочить по убыванию значений столбца цен. Результирующий SQL может выглядеть следующим образом:

    SELECT *
    FROM titles
    ORDER BY price DESC;
    
  • Можно сортировать по нескольким столбцам

    Например, можно создать результат с одной строкой для каждого автора, упорядочивая сначала по штату, а затем по городу. Результирующий SQL может выглядеть следующим образом:

    SELECT *
    FROM authors
    ORDER BY state, city;
    
  • Вы можете сортировать по столбцам, не отображаемым в результирующем наборе

    Например, можно создать результирующий набор, приведя в начало самые дорогие названия, даже если цены не видны. Результирующий SQL может выглядеть следующим образом:

    SELECT title_id,
           title
    FROM titles
    ORDER BY price DESC;
    
  • Вы можете сортировать по производным столбцам

    Например, можно создать результирующий набор, в котором каждая строка содержит название книги, начиная с книг, за которые выплачивается максимальная роялти за экземпляр. Результирующий SQL может выглядеть следующим образом:

    SELECT title,
           price * royalty / 100 AS royalty_per_unit
    FROM titles
    ORDER BY royalty_per_unit DESC;
    

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

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

  • Сгруппированные строки можно сортировать

    Например; Вы можете создать результирующий набор, в котором каждая строка описывает город, а также число авторов в этом городе — с городами, содержащими много авторов, которые появляются в первую очередь. Результирующий SQL может выглядеть следующим образом:

    SELECT city,
           state,
           COUNT(*)
    FROM authors
    GROUP BY city, state
    ORDER BY COUNT(*) DESC, state;
    

    Запрос использует state в качестве дополнительного столбца сортировки. Таким образом, если два состояния имеют одинаковое число авторов, эти состояния отображаются в алфавитном порядке.

  • Можно сортировать с помощью международных данных

    То есть; Столбец можно сортировать с помощью соглашений о сортировке, отличающихся от соглашений по умолчанию для этого столбца. Например, можно написать запрос, который извлекает все названия книги Jaime Patiño. Для отображения заголовков в алфавитном порядке используется последовательность сортировки испанского языка для столбца заголовка. Результирующий SQL может выглядеть следующим образом:

    SELECT title
    FROM authors
         INNER JOIN titleauthor
             ON authors.au_id = titleauthor.au_id
         INNER JOIN titles
             ON titleauthor.title_id = titles.title_id
    WHERE au_fname = 'Jaime'
          AND au_lname = 'Patiño'
    ORDER BY title COLLATE SQL_Spanish_Pref_CP1_CI_AS;