- •Состав языка sql
- •Список полей
- •Все поля
- •Все поля в произвольном порядке
- •Вычисления
- •Литералы
- •Работа с датами
- •Агрегатные функции
- •Операции сравнения
- •Логические операторы
- •Преобразование типов (cast)
- •Изменение порядка выводимых строк (order by)
- •Упорядочивание с использованием имен столбцов
- •Упорядочивание с использованием номеров столбцов
- •Устранение дублирования (модификатор distinct)
- •Соединение (join)
- •Внутренние соединения
- •Самосоединения
- •Внешние соединения
- •Назад | Содержание
Упорядочивание с использованием номеров столбцов
SELECT first_name, last_name, dept_no,
job_code, salary * 1.1
FROM employee
ORDER BY 5
получить список сотрудников, упорядоченный по их зарплате с 10% надбавкой
FIRST_NAME |
LAST_NAME |
DEPT_NO |
JOB_CODE |
|
Ann |
Bennet |
120 |
Admin |
25228.5 |
Kelly |
Brown |
600 |
Admin |
29700 |
Sue Anne |
O'Brien |
670 |
Admin |
34402.5 |
Mark |
Guckenheimer |
622 |
Eng |
35200 |
Roger |
Reeves |
120 |
Sales |
36982.6875 |
Bill |
Parker |
623 |
Eng |
38500 |
Допускается использование нескольких уровней вложенности при упорядочивании выводимой информации по столбцам; при этом разрешается смешивать оба способа.
SELECT first_name, last_name, dept_no,
job_code, salary * 1.1
FROM employee
ORDER BY dept_no, 5 DESC, last_name
получить список сотрудников, упорядоченный сначала по номерам отделов, в отделах - по убыванию их зарплаты (с 10%), а в пределах одной зарплаты - по фамилиям
FIRST_NAME |
LAST_NAME |
DEPT_NO |
JOB_CODE |
|
Oliver H. |
Bender |
000 |
CEO |
234135 |
Terri |
Lee |
000 |
Admin |
59172.3 |
Mary S. |
MacDonald |
100 |
VP |
122388.75 |
Michael |
Yanowski |
100 |
SRep |
48400.000000001 |
Luke |
Leung |
110 |
SRep |
75685.5 |
Janet |
Baldwin |
110 |
Sales |
67801.59375 |
Takashi |
Yamamoto |
115 |
SRep |
8228000.0000001 |
Yuki |
Ichida |
115 |
Eng |
6600000.0000001 |
Устранение дублирования (модификатор distinct)
Дублированными являются такие строки в результирующей таблице, в которых идентичен каждый столбец.
Иногда (в зависимости от задачи) бывает необходимо устранить все повторы строк из результирующего набора. Этой цели служит модификатор DISTINCT. Данный модификатор может быть указан только один раз в списке выбираемых элементов и действует на весь список.
SELECT job_code
FROM employee
получить список должностей сотрудников
JOB_CODE
========
VP
Eng
Eng
Mktg
Mngr
SRep
Admin
Finan
Mngr
Mngr
Eng
...
Данный пример некорректно решает задачу "получения" списка должностей сотрудников предприятия, так как в нем имеются многочисленные повторы, затрудняющие восприятие информации. Тот же запрос, включающий модификатор DISTINCT, устраняющий дублирование, дает верный результат.
SELECT DISTINCT job_code
FROM employee
получить список должностей сотрудников
JOB_CODE
========
Admin
CEO
CFO
Dir
Doc
Eng
Finan
Mktg
Mngr
PRel
SRep
Sales
VP
Два следующих примера показывают, что модификатор DISTINCT действует на всю строку сразу.
SELECT first_name, last_name
FROM employee
WHERE first_name = "Roger"
получить список служащих, имена которых - Roger
FIRST_NAME |
LAST_NAME |
Roger |
De Souza |
Roger |
Reeves |
border=0 cellpadding=3 cellspacing=0>
SELECT DISTINCT first_name, last_name
FROM employee
WHERE first_name = "Roger"
получить список служащих, имена которых - Roger
FIRST_NAME |
LAST_NAME |
Roger |
De Souza |
Roger |
Reeves |
