Оператор SELECT: использование вычисляемых столбцов

Vovan_ST

Vovan_ST

ИТ специалист со стажем. Автор статьи. Профиль

В предыдущей статье мы познакомились с оператором SELECT языка SQL. Узнали основы - для чего он нужен, его синтаксис и как его применять. В данной статье мы рассмотрим Вычисляемые столбцы в SQL запросах с использованием оператора SELECT.

Кроме столбцов, значения которых извлекаются непосредственно из базы дан­ных, SQL-запрос на выборку может содержать вычисляемые столбцы, значения ко­торых определяются на основании значений, хранящихся в базе данных. Чтобы получить вычисляемый столбец, в списке возвращаемых столбцов необходимо указать выражение. Как было сказано в статье "Основы SQL", выражения могут включать в себя операции сложения, вычитания, умножения и деления. Для по­строения более сложных выражений можно использовать скобки. Конечно, столб­цы, участвующие в арифметическом выражении, должны содержать числовые данные. При попытке сложить, вычесть, умножить или разделить столбцы, содер­жащие текстовые данные, SQL выдаст сообщение об ошибке.

В следующем запросе будет получен простой вычисляемый столбец.

Выдать для каждого офиса список городов, регионов и сумм, на которые был пере­выполнен/недовыполнен план по продажам.

SELECT CITY, REGION, (SALES - TARGET)
    FROM OFFICES;

CITY               REGION      (SALES-TARGET)
------------     --------     ---------------
Denver            Western        -$113,958.00
New York          Eastern         $117,637.00
Chicago           Eastern         -$64,958.00
Atlanta           Eastern          $17,911.00
Los Angeles       Western         $110,915.00

При выполнении этого запроса для каждой строки таблицы OFFICES генери­руется одна строка результатов, как показано на рис. 3. Значения первых двух столбцов результатов запроса извлекаются непосредственно из таблицы OFFICES. Третий столбец для каждой строки результатов запроса вычисляется на основании значений столбцов текущей строки таблицы OFFICES.

Выполнение запроса, содержащего вычисляемый столбец

Рис. 3. Выполнение запроса, содержащего вычисляемый столбец

Далее приведены другие примеры запросов, в которых используются вычис­ляемые столбцы.

Показать общую стоимость по каждому товару (показаны только 8 строк резуль­тирующего набора).

SELECT MFR_ID, PRODUCT_ID, DESCRIPTION, (QTY_ON_HAND * PRICE)
    FROM PRODUCTS;

MFR_ID        PRODUCT_ID         DESCRIPTION      (QTY_ON_HAND*PRICE)
-------      -----------     ---------------     --------------------
REI                2A45C        Ratchet Link               $16,590.00
ACI                4100Y      Widget Remover               $68,750.00
QSA                 XK47             Reducer               $13,490.00
BIC                41672               Plate                    $0.00
IMM                 779C        900-lb Brace               $16,875.00
ACI                41003       Size 3 Widget               $22,149.00
ACI                41004       Size 4 Widget               $16,263.00
BIC                41003              Handle                $1,956.00

 Что получится, если увеличить плановый объем продаж для каждого служащего на 3% от его фактического объема продаж?

SELECT NAME, QUOTA, (QUOTA + (.03*SALES))
    FROM SALESREPS;

NAME                      QUOTA      (QUOTA+(.03*SALES))
--------------     ------------     --------------------
Bill Adams          $350,000.00              $361,037.33
Mary Jones          $300,000.00              $311,781.75
Sue Smith           $350,000.00              $364,221.50
Sam Clark           $275,000.00              $283,997.36
Bob Smith           $200,000.00              $204,277.82
Dan Roberts         $300,000.00              $309,170.19
Tom Snyder                 NULL                     NULL
Larry Fitch         $350,000.00              $360,855.95
Paul Cruz           $275,000.00              $283,603.25
Nancy Angelli       $300,000.00              $305,581.26

Как было сказано в блоге "Основы SQL", во многих СУБД реализованы до­полнительные арифметические операции, операции над строками символов и встроенные функции, которые можно применять в выражениях SQL. Их также можно использовать в выражениях в списке возвращаемых столбцов, как в сле­дующем примере для DB2, в котором из даты извлекается значение месяца и года.

Вывести список имен, а также месяц и год приема на работу всех служащих. (В слу­чае базы данных Oracle вместо функций month и YEAR следует применить функцию TO_CHAR)

SELECT NAME, MONTH(HIRE_DATE), YEAR(HIRE_DATE)
FROM SALESREPS;

Кроме того, в списке возвращаемых столбцов можно использовать константы. Это может пригодиться для создания результатов запроса, которые более удобны для восприятия, как в следующем примере.

Список объемов продаж для каждого города.

SELECT CITY, 'has sales of', SALES
    FROM OFFICES;

CITY               HAS SALES OF            SALES
------------      -------------     ------------
Denver             has sales of      $186,042.00
New York           has sales of      $692,637.00
Chicago            has sales of      $735,042.00
Atlanta            has sales of      $367,911.00
Los Angeles        has sales of      $835,915.00

Создается впечатление, что результаты запроса состоят из отдельных предло­жений, каждое из которых относится к одному из офисов, но на самом деле они представляют собой таблицу, содержащую три столбца. Первый и третий столбцы содержат значения из таблицы OFFICES. Во втором столбце для всех строк содер­жится одна и та же текстовая строка из двенадцати символов.

Теперь давайте рассмотрим, как выбрать все данные из таблицы через запрос SELECT.

Вас заинтересует / Intresting for you:

SQL: Правила выполнения однота...
SQL: Правила выполнения однота... 49 просмотров Дэйзи ак-Макарова Sat, 31 Jul 2021, 06:47:05
Условия отбора в операторе SEL...
Условия отбора в операторе SEL... 206 просмотров Боба Mon, 28 Jun 2021, 19:18:42
Оператор SQL SELECT: введение ...
Оператор SQL SELECT: введение ... 362 просмотров Боба Thu, 24 Jun 2021, 18:58:21
Правила именование объектов SQ...
Правила именование объектов SQ... 222 просмотров Дэн Sat, 05 Jun 2021, 09:02:07
Войдите чтобы комментировать

apv аватар
apv ответил в теме #10068 24 июнь 2021 20:05
Статья добротная. Все понятно описано человеческим языком. Видео тоже хорошо. Зачтено!
Vovan_ST аватар
Vovan_ST ответил в теме #10067 24 июнь 2021 20:04
Как вам статья, товарищи?)