SQL — суммирование вычисляемого поля

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Антивирус. Ты кто?

Вирус. Область данных!

Антивирус. А не вирус?

Вирус. Hи боже мой!

Антивирус. А зачем прерывания перехватываешь?

Вирус. Я?!

Антивирус. Вот же подпрограмма.

Вирус. Это не подпрограмма. Это цитата из Лао-цзы на языке оригинала в альтернативной кодировке.

Антивирус. А зачем EXE-файлы ищешь?

Вирус. А вдруг хозяин спросит: «А где мои ЕХЕ-файлы?» А я ему — вот они!

Антивирус. Сдается мне, что ты все-таки вирус.

Вирус. Hу ладно, только тебе признаюсь, только ты никому не говори! Hа самом деле я… антивирусная вакцина!

Антивирус. А зачем нужна антивирусная вакцина, если есть я?

Вирус. Откуда я знаю? У хозяина спроси.

Антивирус. А если я тебя на всякий случай все-таки грохну?

Вирус. А если я тебя?

Антивирус. Hе получится. У меня управление.

Вирус. А ты свою контрольную сумму давно пересчитывал?

Антивирус. А причем тут моя контрольная… ой!!!

Вирус. То-то же.

Бывают случаи, когда в приложении Delphi, которое для получения доступа к данным использует SQL, необходимо узнать сумму вычисленных данных. Другими словами, необходимо с помощью SQL создать вычисляемое поле и применить к нему функцию SUM.

При выполнении такой операции с SQL-таблицами (например, Local InterBase Server), все достаточно тривиально, и сумма вычисляется простым использованием функции SUM с указанием поля. Например, используя демонстрационную таблицу EMPLOYEE (из базы данных EMPLOYEE.GDB):

SELECT SUM(SALARY / 12)

FROM EMPLOYEE

Та же самая методика применима в случае возвращаемого набора данных, в котором значения группируются в другом столбце с помощью утверждения GROUP BY:

SELECT EMP_NO, SUM(SALARY / 12)

FROM EMPLOYEE

GROUP BY EMP_NO

ORDER BY EMP_NO

Пока SQL базы данных поддерживают суммирование вычисляемых полей, локальный SQL этого делать не будет. Для получения результатов нужны другие методы, например копирование результатов запроса с вычисляемым полем во временную таблицу (как и в случае компонента TBatchMove), и использование компонента TQuery для вычисления суммы данных во временной таблице.

{/codecitation}

Добавить комментарий