Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
ИСПОЛЬЗОВАНИЕ АГРЕГИРОВАННЫХ ФУНКЦИЙCOUNT – количество картежей SUM AVG – среднее значение атрибута MIN MAX Стандартом наложен запрет вычисления функций от функций.
SELECT <имя атрибутов>, <имя функций> (<имя атрибутов>) FROM <имя таблицы>
Пример: Надо вычислить среднюю категорию поставщика. SELECT AVG (катег.) FROM S Количество категорий поставщиков. SELECT COUNT (катег.) FROM S ____________________________ SEKECT COUNT (DISTINCT катег.) FROM S ____________________________
SELECT COUNT (*) все картежи, включая NULL, значения повторяющиеся FROM S
ALL SELECT COUNT (ALL катег.) FROM S Будут подсчитаны все повторяющие значения, значения NULL подсчитываться не будут.
ИСПОЛЬЗОВАНИЕ ПАРАМЕТРА GROUP BY Позволяет вычислить агрегированную функцию для каждой из группировок картежей, при этом картежи группируются по некоторому атрибуту, указанному в строке SELECT Пример: Пусть требуется для каждого кода деталей вычислить MAX объем поставки. SELECT код дет., МАХ (кол) FROM SP GROUP BY код дет. ____________________________
P1 200 P3 200 P6 300 P2 300 P5 200 P4 300
Пример: Пусть требуется вычислить минимальный вес для каждой из группы деталей, совпадающей наименованием и цветом. SELECT Наим., цвет, MIN (вес) FROM P GROUP BY Наим., цвет _________________ Гайка красный 10 Винт зеленый 12 Кольцо синий 24 Винт красный 10 Шайба желтый 25 Параметр НАVING , который позволяет наложить ограничение на целую группу и, таким образом, исключить из рассмотрения некоторые группировки.
Пример: Выбрать для каждой детали средний объем поставки, включая в выборку только те детали, которые присутствуют более чем в одной поставке. SELECT код дет., АVG (Кол.) FROM SP GROUP BY код дет. НАVING COUNT (Код пост.) > 1 _____________________
Р1 150 Р6 500/3 Р2 300 Р5 200 Р4 200 Очень часто требуется построить запрос, где требуется много таблиц. Join – присоединение таблиц Join S. Город Р. Город <имя табл.> <имя атр.>
Пример: Пусть требуется вывести информацию об именах поставщиков и наименовании товаров при условии, что поставщик проживает в том же городе, где производится товар. SELECT S.имя, Р.наим., S.Город FROM SP WHERE S.Город = P.Город ______________________________ Иванов Гайка Москва Иванов Кольцо Москва Иванов Винт Москва
Петров Винт Тула Петров Шайба Тула Сидоров Винт Тула Сидоров Шайба Тула
Круглов Гайка Москва Круглов Кольцо Москва Круглов Винт Москва
Можно строить следующие сложные запросы с использованием более сложных предикатов.
Пример: Требуется вывести информацию о поставщиках и городах, в которых они проживают для тех поставщиков, для которых объем поставки больше 200. SELECT S. имя, S. город FROM S, SP WHERE S. код пост. = SP. код пост. AND SP. Кол. > 200 ________________ Петров Тула Сидоров Тула Сидоров Тула Смирнов Орел
Если хотим устранить дублирование картежей, то надо добавить DISTINCT.
Пример: Надо вывести поставки поставщиков, которые проживают не в том городе, где делаются детали. SELECT S. имя, P. наим., SP. количество FROM S, P, SP WHERE SP. Код пост. = S. Код пост. AND SP. Код дет. = P. Код дет. AND S. город < > P. город _____________________ Иванов винт 100 Петров гайка 200 Петров винт 100 Сидоров винт 300 Смирнов винт 100 Смирнов шайба 200 МИРНОВ ВИНТ 300
Дата добавления: 2014-08-04; просмотров: 330; Нарушение авторских прав Мы поможем в написании ваших работ! |