Программирование >>  Sql: полное руководство 

1 ... 51 52 53 [ 54 ] 55 56 57 ... 264


SELECT AVG(PRICE) FROM PRODUCTS WHERE MFR ID = ACI

AVG(PRICE)

$804.29

Вычислить среднюю стоимость заказов, сделанных компанией Acme Mfg. (идентификатор клиента 2103).

SELECT AVG(AMOUNT) FROM ORDERS WHERE CUST = 2103

AVG(AMOUNT)

$8,95.50

Вычисление экстремумов (функции MIN и MAX)

Статистические функции min () и max () позволяют найти соответственно наименьшее и наибольшее значения в столбце. При этом столбец может содержать числовые или строковые значения либо значения даты/времени. Результат, возвра-щаемьп этими функциями, имеет точно такой же тип данных, что и сам столбец.

Ниже приведен ряд примеров, иллюстрирующих использование упомянутых функций:

Каковы наибольший и наименьший плановые объемы продаж?

SELECT MIN(QUOTA), MAX(QUOTA) FROM SALESREPS

MIN(QUOTA) MAX(QUOTA)

$200,000.00 $350,000.00

Когда был сделан самый первый из всех содержащихся в базе данных заказов?

SELECT MIN(ORDER DATE) FROM ORDERS

MIN(ORDER DATE)

04-JAN-8 9

Каков наибольший процент выполнения плана среди всех служащих?

SELECT МАХ(100 * (SALES/QUOTA)) FROM SALESREPS

MAX(100 - (SALES/QUOTA))

135.44



в случае применения функций min () и мах () к числовым данным числа сравниваются по арифметическим правилам (среди двух отрицательных чисел меньше то, у которого модуль больше; нуль меньше любого положительного числа и больше любого отрицательного). Сравнение дат происходит последовательно (более ранние значения дат считаются меньшими, чем более поздние). Сравнение интервалов времени выполняется на основании их продолжительности (более короткие интервалы времени считаются меньшими, чем более длинные).

В случае применения функций min () и мах () к строковым данным результат сравнения двух строк зависит от используемой таблицы кодировки. На персональных компьютерах и мини-компьютерах, где используется таблица кодировки ASCH, установлен порядок сортировки, при котором цифры идут перед буквами, а все прописные буквы - перед строчными. На мэйнфреймах компании IBM, где используется таблица кодировки EBCDIC, строчные символы расположены перед прописными, а цифры следуют за буквами. Ниже приведено сравнение последовательностей сортировки, принятых в таблицах кодировки ASCII и EBCDIC, на примере строк, упорядоченных по возрастанию:

ASCII EBCDIC

1234авс acme mfg.

5678abc zeta corp.

acme mfg. Acme Mfg.

Acme Mfg. acme mfg.

zeta corp. Zeta Corp.

Zeta Corp. zeta corp.

acme mfg. 1234abc

zeta corp. 5678abc

Отличия в порядке сортировки приводят к тому, что один и тот же запрос, содержащий предложение order by, в различных системах может привести к различным результатам.

Хранение в таблицах символов национальных алфавитов (например, кириллицы) может вызвать дополнительные проблемы. В некоторых СУБД для каждого языка используется свой алгоритм сортировки. В других СУБД такие символы сортируются в соответствии с кодом символа. Для решения этой проблемы в стандарт SQL2 включено условие поддержки национальных наборов символов, пользовательских наборов символов и альтернативных последовательностей сортировки. К сожалению, в настоящее время эти возможности реализованы не во всех СУБД. Если в приложении используются символы национальных алфавитов, необходимо проверить, как конкретная СУБД обрабатывает их.

Вычисление количества значений в столбце (функция COUNT)

Статистическая функция count () подсчитывает количество значений в столбце. При этом тип данных столбца может быть любым. Функция count () всегда возвращает целое число независимо от типа данных столбца. Ниже приведен ряд запросов, в которых используется эта функция-

Сколько клиентов у нашей компании ?

SELECT COUNT{CUST NUM) /FROM CUSTOMERS



COUNT{CUST NUM) 21

Сколько служащих перевыполнили план ?

SELECT COUNT(NAME) FROM SALESREPS WHERE SALES > QUOTA

COUNT(NAME)

Сколько имеется заказов стоимостью более $25000?

SELECT COUNT(AMOUNT) FROM ORDERS WHERE AMOUNT > 2 5000.00

COUNT(AMOUNT)

Следует заметить, что для функции count () важны не конкретные значения ячеек, а важно количество ячеек, удовлетворяющих заданному критерию. Поэтому на самом деле не важно, какой столбец указывать в качестве аргумента. Предыдущий запрос можно переписать и так:

SELECT COUNT(ORDER NUM) FROM ORDERS WHERE AMOUNT > 25000.00

COUNT(AMOUNT)

Мысленно трудно представить запрос вроде подсчитать, сколько стоимостей заказов или подсчитать, сколько номеров заказов ; гораздо проще представить запрос подсчитать, сколько заказов . Поэтому в SQL была введена специальная статистическая функция count (*), которая подсчитывает строки, а не значения данных Ниже приведен предыдущий запрос, переписанный с использованием этой функции:

SELECT COUNT(*) FROM ORDERS WHERE AMOUNT > 25000.00

COUNT(*)

Если применять count (*) в качестве функции подсчета строк, то запрос становится более удобочитаемым На практике для подсчета строк всегда используется функция count (*), а не count ().



1 ... 51 52 53 [ 54 ] 55 56 57 ... 264

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