возвращаемых запросом. Следующий пример показывает, как с помощью
функции C0UNT() можно получить количество строк в таблице products:
П SELECT COUNT(product_id)
FROM products;
Использование простых функций 125
COUNT( PRODUCT_ID)
12
Совет Следует избегать употребления в качестве аргумента функции C0UNT() символа
звездочки (*). Дело в том, что в этом случае на получение результата может уйти больше времени.
Вместо этого рекомендуется использовать в качестве аргумента C0UNT() имя столбца
таблицы или псевдостолбец ROWID. (Как было показано в Главе 2, столбец ROWID содержит
внутренний адрес строки в базе данных Oracle.)
В следующем примере в функцию C0UNT() передается ROWID, а в ответ
мы получаем количество строк в таблице products:
□ SELECT COUNT(ROWID)
FROM products;
COUNT(ROWID)
12
M AX () и M IN ()
Функции MAX(x) и MIN(x) используются для получения максимального и минимального
значений х соответственно. В следующем примере показано,
как с помощью МАХ() и MIN() получить максимальное и минимальное значения
столбца price таблицы products:
□ SELECT MAX(price), MIN(price)
FROM products;
MAX(PRICE) MIN(PRICE)
49.99 10.99
Можно использовать MAX() и MIN() с любым типом данных, включая
строки и даты. При использовании MAXQ со строками строки упорядочиваются
в алфавитном порядке, причем самая большая строка располагается
в самом низу списка, а самая маленькая - в самом его верху. Например, в
таком списке строка Albert встретится раньше, чем строка Zeb. В следующем
примере с помощью функций МАХ() и MIN() получаются максимальное
и минимальное значения строки паше таблицы products:
□ SELECT MAX(name), MIN(name)
FROM products;
MAX(NAME) MIN(NAME)
Z F ile s 2412: The Return
Максимальной датой считается самая поздняя, а минимальной - самая
ранняя из имеющихся дат. В следующем примере показаны максимальное
и минимальное значения столбца dob из таблицы customers, полученные с
помощью функций МАХ() и MIN():
126 Глава 4
□ SELECT MAX(dob), MIN(dob)
FROM customers;
MAX(DOB) MIN(DOB)
16-MAR-71 01-JAN-65
STD DE V()
Функция STDDEV() используется для вычисления стандартного отклонения
х. Стандартное отклонение - это статистическая функция, определяемая
как квадратный корень из дисперсии (о дисперсии см. ниже).
В следующем примере показано стандартное отклонение для столбца
price таблицы product, полученное с помощью функции STDDEV():
□ SELECT STDDEV(price)
FROM products;
STDDEV(PRICE)
11.0896303
s u m o
Функция SUM() складывает все значения столбца х и возвращает полученную
сумму. В следующем примере показано, как с помощью функции SUM()
можно получить сумму значений столбца price таблицы products:
П SELECT SUM(price)
FROM products;
SUM(PRICE) SUM(PRICE)
236.77
V AR IA N C E ()
Функция VARIANCE(x) используется для получения дисперсии х. Дисперсия
является статистической функцией и определяется как разброс или
широта колебаний группы чисел в некоторой выборке значений, равный
квадрату стандартного отклонения.
В следующем примере с помощью функции VARIANCE () определяется
дисперсия столбца price таблицы products:
□ SELECT VARIANCE(price)
FROM products;
VARIANCE(PRICE)
122.979899
Группировка строк
Иногда нужно сгруппировать блоки строк таблицы и получить для этих
групп строк некоторую информацию. Например, можно запросить среднюю
Использование простых функций 127
цену для различных групп товаров таблицы products. Сначала будет показано,
как это можно сделать не самым простым способом, а потом - как это
можно сделать проще, используя фразу GROUP BY для объединения схожих
строк в одну группу.
Не самый простой способ состоит в том, чтобы ограничить строки, передаваемые
на вход функции AVG(), используя для этого фразу WHERE. Следующий
запрос вычисляет среднее значение цены для книг, записанных
в таблицу products (значение produ ct_type_id для книг равно 1):
□ SELECT AVG(price)
FROM products
WHERE product_type_id = 1;
AVG(PRICE)
24.975
Чтобы получить среднее значение цены для других типов товаров, придется
выполнить дополнительные запросы для различных значений
p rodu ct_type_id во фразе WHERE. Как вы понимаете, это довольно трудоёмкая
задача. Но есть другой, более простой способ выполнить эту работу,
в котором используется новая фраза GROUP BY.
Использование для группировки строк фразы GROUP BY
Фраза GROUP BY используется для группировки строк в блоки с общим значением
столбца. Следующий запрос группирует строки из таблицы
products в блоки с одним и тем же значением столбца product_type_id: