Создание вычисляемых полей
До сих пор с помощью операторов SELECT мы отображали только содержащиеся в таблицах данные. Это полезно, но не всегда достаточно. Вам может понадобиться общая сумма, среднее значение или результаты других расчетов, основанные на данных, имеющихся в таблице. Именно здесь помогут вычисляемые поля. В отличие от всех выбранных нами ранее столбцов, вычисляемых полей на самом деле в таблице базы данных нет. Они создаются "на лету" оператором SELECT.
Важно отметить, что только база данных "знает", какие столбцы в операторе SELECT являются реальными столбцами таблицы, а какие — вычисляемыми полями. С точки зрения клиента (например, вашего приложения), данные вычисляемого поля возвращаются точно так же, как и данные из любого другого столбца.
В общем случае для создания вычисляемого поля в списке SELECT следует указать некоторое выражение языка SQL. В этих выражениях могут применяться операции сложения, вычитания, умножения и деления, а также встроенные функции СУБД. При построении сложных выражений могут использоваться круглые скобки.
SELECT service, price, price*1.5
FROM tbl_service
Представленный запрос возвращает список услуг, с указанием их текущей стоимости и стоимости, увеличенной на 50%.
Результат:
service | price | price*1.5 |
Equipment rental | 200,00 | 300.00 |
Calling card service | 100,00 | 150.00 |
Wireless service | 150,00 | 225.00 |
Multiple lines | 320,00 | 480.00 |
Voice mail | 50,00 | 75.00 |
Paging service | 50,00 | 75.00 |
Internet | 250,00 | 375.00 |
Caller ID | 20,00 | 30.00 |
Call waiting | 20,00 | 30.00 |
Call forwarding | 20,00 | 30.00 |
3-way calling | 100,00 | 150.00 |
Electronic billing | 50,00 | 75.00 |
Получить список, содержащий имя, фамилию и возраст клиентов:
SQL:
SELECT lastname, name, TRUNCATE((TO_DAYS(CURRENT_DAY())
– TO_DAYS(d_birth)+364)/365,0)
FROM tbl_clients
При построении выражения для вычисления возраста были использованы встроенные функции SQL.
При выводе результатов запроса каждый столбец по умолчанию получает заголовок, совпадающий с его именем в базе данных. У вычисляемых полей заголовки отсутствуют.
Для упрощения чтения и понимания результатов запроса можно переопределить заголовки столбцов. Чтобы получить необходимые имена заголовков, просто введите <column> <alias> или <column> as <alias> в списке выбора вместо обычных имен столбцов.
Запрос из предыдущего примера можно переписать следующим образом:
SQL:
SELECT lastname, name,
TRUNCATE((TO_DAYS(CURRENT_DAY())
– TO_DAYS(d_birth)+364)/365,0) AS age
FROM tbl_clients