Программирование >>  Преобразование значений null 

1 ... 10 11 12 [ 13 ] 14 15 16 ... 219


EMPNO

DEPTNO

ENAME

7839

5000

KING

PRESIDENT

7782

2450

CLARK

MANAGER

7934

1300

MILLER

CLERK

7788

3000

SCOTT

ANALYST

Обсуждение

Оператор ORDER BY позволяет упорядочивать строки результирующего множества. В разделе Решение строки сортируются по столбцу SAL в возрастающем порядке. По умолчанию ORDER BY осуществляет сортировку по возрастанию, поэтому оператор ASC является необязательным. Чтобы обеспечить сортировку по убыванию, используется оператор DESC:

select ename,job,sal

from emp

where deptno = 10

order by sal desc

ENAME JOB SAL

KING PRESIDENT 5000

CLARK MANAGER 2450

MILLER CLERK 1300

Имя столбца, по которому должна проводиться сортировка, задавать необязательно. Можно указать порядковый номер столбца. Нумерация столбцов в списке оператора SELECT начинается с 1 и осуществляется в направлении слева направо. Например:

select ename,job,sal from emp where deptno = 10 order by 3 desc

ENAME JOB SAL

KING PRESIDENT 5000 CLARK MANAGER 2450

MILLER CLERK 1300

Число 3 в операторе ORDER BY данного примера соответствует третьему столбцу списка оператора SELECT, т. е. столбцу SAL.

Сортировка по нескольким полям Задача

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



7902

3000

FORD

ANALYST

7566

2975

JONES

MANAGER

7876

1100

ADAMS

CLERK

7369

SMITH

CLERK

7698

2850

BLAKE

MANAGER

7499

1600

ALLEN

SALESMAN

7844

1500

TURNER

SALESMAN

7521

1250

WARD

SALESMAN

7654

1250

MARTIN

SALESMAN

7900

JAMES

CLERK

Решение

В операторе ORDER BY через запятую перечислите столбцы, по которым должна проводиться сортировка:

1 select empno,deptno,sal,ename,job

2 from emp

3 order by deptno, sal desc

Обсуждение

Старшинство столбцов, по которым осуществляется сортировка, в операторе ORDER BY определяется слева направо. Если столбец задается его порядковым номером в списке оператора SELECT, то это число не должно превышать количества элементов в списке SELECT. Можно проводить сортировку по столбцу, не входящему в список SELECT, но для этого необходимо явно указать его имя. Тем не менее при использовании в запросе операторов GROUP BY или DISTINCT сортировка может осуществляться только по столбцам из списка оператора SELECT.

Сортировка по подстрокам

Задача

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

ENAME

KING

PRESIDENT

SMITH

CLERK

ADAMS

CLERK

JAMES

CLERK

MILLER

CLERK

JONES

MANAGER

CLARK

MANAGER

BLAKE

MANAGER

ALLEN

SALESMAN



SMITH 20 ALLEN 30

MARTIN SALESMAN

WARD SALESMAN

TURNER SALESMAN

SCOTT ANALYST

FORD ANALYST

Решение

DB2, MySQL, Oracle и PostgreSQL

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

select ename,job from emp

order by substr(job,length(job)-2)

SQL Server

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

select ename,job from emp

order by substring(job,len(job)-2,2)

Обсуждение

Используя функции работы с подстроками конкретной СУБД, можно без труда проводить сортировку по любой части строки. Чтобы сортировать по последним двум символам строки, находим конец строки (что соответствует ее длине) и вычитаем 2. Таким образом, начальная позиция будет располагаться на предпоследнем символе строки. Теперь выбираем все символы после этой позиции. SQL Server требует задания для SUBSTRING третьего параметра, определяющего количество выбираемых символов. В данном примере подходит любое число, большее или равное 2.

Сортировка смешанных буквенно-цифровых данных

Задача

Требуется сортировать смешанные буквенно-цифровые данные по числовой или символьной части. Рассмотрим следующее представление:

create view V as

select ename deptno as data

from emp

select * from V

DATA



1 ... 10 11 12 [ 13 ] 14 15 16 ... 219

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика