Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Обработка значений Null

Временные функции, возвращающие даты | Временные функции, возвращающие строки | Временные функции, возвращающие числа | Функции преобразования | Упражнения | Принципы группировки | Gt; FROM account | Агрегатные функции | Сравнение неявных и явных групп | Gt; FROM account |


Читайте также:
  1. I. Обработка информации, полученной при обследовании
  2. IX. Требования к оборудованию, инвентарю, таре и их санитарная обработка
  3. Выделение значений
  4. Выделение крайних значений
  5. Выполнение измерений, обработка результатов
  6. Вычисление значений логарифмов
  7. Вычисление значений тригонометрических функций

 

При агрегировании, да и при вычислении любого численного выраже_ ния, всегда следует учитывать влияние значения null на результат вы_ числения. Для иллюстрации создадим простую таблицу для хранения числовых данных и заполним ее набором {1, 3, 5}:

 

mysql> CREATE TABLE number_tbl

_> (val SMALLINT);

 

Query OK, 0 rows affected (0.01 sec)

 

mysql> INSERT INTO number_tbl VALUES (1);

 

Query OK, 1 row affected (0.00 sec)

 

mysql> INSERT INTO number_tbl VALUES (3);

 

Query OK, 1 row affected (0.00 sec)

 

mysql> INSERT INTO number_tbl VALUES (5);

 

Query OK, 1 row affected (0.00 sec)

 

Рассмотрим следующий запрос, применяющий пять агрегатных функ_ ций к этому набору чисел:

 

mysql> SELECT COUNT(*) num_rows,

 

_> COUNT(val) num_vals, _> SUM(val) total,

 

_> MAX(val) max_val, _> AVG(val) avg_val _> FROM number_tbl;

 

+__________+__________+_______+_________+_________+ | num_rows | num_vals | total | max_val | avg_val | +__________+__________+_______+_________+_________+

 

| 3 | 3 | 9 | 5 | 3 |

 

+__________+__________+_______+_________+_________+ 1 row in set (0.00 sec)

 

Как и следовало ожидать, результаты таковы: и count(*), и count(val) возвращают значение 3, sum(val) – значение 9, max(val) – 5, а avg(val) – 3. Теперь добавим в таблицу number_tbl значение null и выполним запрос еще раз:

 

mysql> INSERT INTO number_tbl VALUES (NULL);

 

Query OK, 1 row affected (0.01 sec)

 

mysql> SELECT COUNT(*) num_rows,

 

_> COUNT(val) num_vals, _> SUM(val) total,

 

_> MAX(val) max_val, _> AVG(val) avg_val _> FROM number_tbl;

 

+__________+__________+_______+_________+_________+ | num_rows | num_vals | total | max_val | avg_val | +__________+__________+_______+_________+_________+

 

| 4 | 3 | 9 | 5 | 3 |

 

Формирование групп  
   

 

+__________+__________+_______+_________+_________+

 

1 row in set (0.00 sec)

 

Даже при добавлении в таблицу значения null функции sum(), max() и avg() возвращают те же значения; это означает, что они игнорируют все встречающиеся значения null. Функция count(*) теперь возвращает значение 4, что является правильным, поскольку в таблице number_tbl четыре строки, тогда как функция count(val) по_прежнему возвращает значение 3. Разница в том, что функция count(*) считает строки и по_ этому не подвержена влиянию значений null, содержащихся в строке. А вот функция count(val) считает значения в столбце val, пропуская все встречающиеся значения null.

 


Дата добавления: 2015-08-17; просмотров: 45 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Использование выражений| Группировка по нескольким столбцам

mybiblioteka.su - 2015-2024 год. (0.006 сек.)