Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы языка SQL.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
97 Кб
Скачать
☆

Упорядочивание с использованием номеров столбцов

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