русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ЗНАЧЕНИЯ NULL В СТОЛБЦАХ ГРУППИРОВКИ


Дата добавления: 2013-12-24; просмотров: 825; Нарушение авторских прав


Когда в столбце группировки содержится значение null, возникают дополнительные осложнения. Если значение столбца неизвестно, к какой группе его следует отнести? В предложении where при сравнении двух значений null результат имеет значение null (а не true), т.е. два значения null не считаются одинаковыми. Если такое соглашение применить в предложении group by, это приведет к тому, что каждая строка со значением null в столбце группировки будет помещена в отдельную группу, состоящую из одной этой строки.

На практике это правило очень неудобно. Поэтому в стандарте ANSI/ISO определено, что два значения null в предложении group by равны. Если две строки имеют значение null в одинаковых столбцах группировки и идентичные значения во всех остальных столбцах группировки, они помещаются в одну группу. Небольшая таблица иллюстрирует принцип обработки значений null предложением group by в соответствии со стандартом ANSI/ISO, как показано в следующем запросе:

Хотя такой принцип обработки значений null определен в стандарте SQL, он реализован не во всех диалектах SQL. Прежде чем рассчитывать определенные результаты, следует протестировать свою базу данных.

УСЛОВИЯ ПОИСКА ГРУПП (ПРЕДЛОЖЕНИЕ HAVING)

Точно так же, как предложение where используется для отбора отдельных строк, участвующих в запросе, предложение having можно применить для отбора групп строк. Его формат соответствует формату предложения where. Предложение having состоит из ключевого слова having, за которым следует условие поиска. Таким образом, данное предложение oпpeдeляe условие поиска для групп.

Следующий пример иллюстрирует роль предложения having:

Вначале предложение group by разделяет заказы на группы по служащим. После того предложение having исключает все группы, в которых общая стоимость заказа не превышает $30000. И, наконец, предложение select вычисляет среднюю стоимость заказа для каждой из оставшихся групп и генерирует таблицу результатов запроса.



В предложении having указываются точно такие же условия поиска, что и в предложении where. Ниже приведен еще дин пример использования условия поиска групп:

В соответствии с этими правилами, SQL выполняет приведенный выше запрос таким образом:

1. Объединяет таблицы offices и salesreps, чтобы определить город, в котором работает служащий.

2. Группирует строки объединенной таблицы по офисам.

3. Исключает группы, содержащие две или менее строки — это те строки, которые не удовлетворяют критерию предложения having.

4. Вычисляет общие плановые и фактические объемы продаж для каждой группы.

Чтобы осуществить этот запрос, SQL выполняет следующие действия:

1. Объединяет таблицы orders и products, чтобы получить описание, цену и количество единиц на складе для каждого заказанного товара.

2. Группирует строки объединенной таблицы по идентификатору производителя и товара.

3. Исключает группы, в которых количество заказанных единиц составляет менее 75 процентов от количества на складе.

4. Вычисляет общее количество заказанных единиц для каждой группы.

5. Генерирует одну итоговую строку запроса для каждой группы.

6. Сортирует результаты запроса таким образом, чтобы товары, которых на складе больше, шли первыми.

Как было сказано ранее, столбцы description, price и qty_on_hand должны быть указаны в качестве столбцов группировки, поскольку они перечислены в списке возвращаемых столбцов. Однако на деле они не участвуют в процессе группировки, поскольку столбцы mfr_id и prouct_id полностью определяют строку таблицы products, и три оставшихся столбца автоматически имеют в группе одно значение.



<== предыдущая лекция | следующая лекция ==>
Агрегатные функции и значения NULL | Предложение HAVING без GROUP BY


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.