Программирование >>  Руководство по sql 

1 ... 23 24 25 [ 26 ] 27 28 29 ... 105


в списке выбора эти операции могут использоваться в любых комбинациях с именами столбцов и числовыми константами. Например, чтобы отобразить в таблице titles повышение стоимости всех книг на 100%, можно выполнить следующий запрос:

SQL:

select title id, ytd sales, ytd sales * 2 from titles

В результате получится следующая таблица:

Результат:

title id

ytd sales

PC8888

4095

8190

BU1032

4095

8190

PS7777

3336

6672

PS3333

4072

8144

BUllll

3876

7752

МС2222

2032

4064

ТС7777

4095

8190

ТС4203

15096

30192

РС1035

8780

17560

МС3026

NULL

NULL

BU2075

18722

37444

PS2091

2045

4090

PS2106

МС3021

22246

44492

ТС3218

BU7832

4095

8190

PS1372

РС9999

NULL

NULL

Обратите внимание на нулевые значения в ytdsales и производном столбце. Любые арифметические операции над нулевыми значениями в результате дают NULL. Производному столбцу можно задать заголовок (например, Projected Sales):

SQL:

select title id, ytd sales, ytd sales * 2 as Projected Sales from titles

Иногда, как это было в предыдущем примере, в результат включаются данные как исходного, так и производного столбца. Однако включать в список выбора столбец, на основе которого выполнялись вычисления, необязательно. Чтобы увидеть только вычисленные значения, можно выполнить следующую команду:

SQL:

select title id, ytd sales * 2 from titles

Результат: title id

PC8888 BU1032 PS7777

8190 8190 6672



PS3333

8144

BUllll

7752

MC2222

4064

TC7777

8190

TC4203

30192

PC1035

17560

MC3026

NULL

BU2075

37444

PS2091

4090

PS2106

MC3021

44492

TC3218

BU7832

8190

PS1372

PC9999

NULL

Вычисления с использованием имен столбцов. Арифметические операции также можно выполнять над данными двух и более столбцов. Например:

SQL:

select title id, ytd sales * price from titles

Результат:

title id

PC8888

81900.0000

BU1032

81859.0500

P57777

26654.6400

P53333

81399.2800

BUllll

46318.2000

MC2222

40619.6800

TC7777

61384.0500

TC4203

180397.2000

PC1035

201501.0000

MC3026

(NULL)

BU2075

55978.7800

P52091

22392.7500

P52106

777.0000

MC3021

66515.5400

TC3218

7856.2500

BU7832

81859.0500

P51372

8096.2500

PC9999

(NULL)

Наконец, можно получать требуемые значения на основе столбцов из разных таблиц. (Многотабличные запросы рассматриваются в главе, посвященной операциям объединения таблиц и подзапросам.)

Порядок выполнения арифметических тераторов. Если в выражении имеется несколько арифметических операторов, они будут выполняться в порядке, установленном в системе (рис. 4.2). В соответствии с общепринятыми правилами сначала вы-



полняется умножение и деление, затем вычитание и сложение. Если в выражении присутствует несколько операторов с одинаковым приоритетом, они выполняются слева направо. Максимальный приоритет имеют выражения, взятые в скобки.

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

SQL:

select title id, ytd sales * price - advance from titles

Скобки

Умножение Деление

Вычитание Сложение

Рис. 4.2. Иерархия арифметических операторов

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

SQL:

select title id, (ytd sales * price) - advance from titles

Результат:

title id

PC8888

73900.0000

BU1032

76859.0500

P57777

22654.6400

P53333

79399.2800

BUllll

41318.2000

MC2222

40619.6800

TC7777

53384.0500

TC4203

176397.2000

PC1035

194501.0000

MC3026

(NULL)

BU2075

45853.7800

P52091

20117.7500

P52106

-5223.0000

MC3021

51515.5400

TC3218

856.2500

BU7832

76859.0500

P51372

1096.2500

PC9999

(NULL)



1 ... 23 24 25 [ 26 ] 27 28 29 ... 105

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