Базы данных

Выражения, литералы и обобщающие функции


До сих пор рассматривались операторы select, которые возвращали значения, входившие в качестве значений атрибутов в исходные таблицы. Однако нужно иметь возможность создавать новые значения и включать их в результат. Например, может понадобиться определить, основываясь на содержащейся в карточках учета рабочего времени информации, сколько часов в каждом случае отработано. Количество отработанных часов — это разность между указанными на карточке временем окончания и временем начала работы. В языке SQL вычисление времени возвращает численные значения, представленные как доли суток. Следовательно, чтобы узнать количество отработанных часов, надо умножить разность между временем окончания и начала работы на 24. Можно включить выражение (endTime-startTime) 24 в качестве отобранного атрибута в следующий оператор:

select lastName, firstName, Employee.ssn, date,

(endTime-startTime)24 from Employee, TimeCard where Employee.ssn = TimeCard.ssn

Этот оператор создает на выходе строку для каждой исходной строки, представляющей собой соединение отношений Employee и TimeCard. Значение выражения для выходной строки вычисляется по значениям атрибутов endTime и startTime исходной строки соединения. В 7.2 показаны результаты выполнения этого SQL-оператора.

Таблица 7.2. Отчет по карточкам учета рабочего времени, р котором количество отработанных часов представлено атрибутом Exprl

lastName firstName ssn date Eprl

Uno Jane 145-09-0967 1/14/99 3.75

Uno Jane 145-09-0967 1/16/99 3.75

Toulouse Jie 245-11-4554 1/14/99 3.75

Threat Ayisha 376-77-0099 2/23/99 8

Threat Ayisha 376-77-0099 1/3/99 4

Threat Ayisha 376-77-0099 1/3/99 4

Отличие межу выборкой выражения и выборкой атрибута из исходной таблицы состоит в том, что для атрибута, представляющего значение выражения, еще не существует очевидного имени. Как назвать (endTime-startTime) 24? Все атрибуты всех отношений имеют имя, но стандарт языка SQL не определяет, какое имя должно быть в таких случаях. Одна СУБД, использующая язык SQL, называет этот атрибут column5 (столбец5). СУБД Microsoft Access, с помощью которой создавалась 7.2, называет этот атрибут Exprl. Чтобы дать атрибуту имя, можно воспользоваться предложением as. Например, оператор select, приводимый ниже, называет вычисленный атрибут hoursWorked. Результирующая таблица для этого оператора содержит пять атрибутов, последний из них — атрибут hoursWorked, значения которого представляют собой числа с плавающей точкой.

select lastName, firstName, Employee.ssn, date,

(endTime-startTime)24 as hoursWorked from Employee, TimeCard where Employee.ssn=TimeCard.ssn

Комментарии закрыты