Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД / Uchpos / Gl_4.doc
Скачиваний:
24
Добавлен:
27.04.2015
Размер:
342.53 Кб
Скачать

Группы записей

Все рассмотренные выше запросы относились к отдельным записям в таблице. Кроме того, можно задавать вопросы, относящиеся к группам записей. Можно выделить записи на основании характеристик группы, вычислить статистические показатели по группам записей, сравнить характеристики группы с другими записями. В таких запросах можно использовать агрегатные операторы. Операторы могут работать не со всеми типами полей и включать в группу при вычислении все или только уникальные значения.

Таблица 3

Оператор

Типы полей

Группировка по умолчанию

average

Все кроме А

all

count

все

unigue

max

все

unique

min

все

unique

sum

все

кроме A и D all

Группировку по умолчанию можно изменить в запросе, указав в операторе вычисления слово all или unique.

Checkmark в той же строке, что и агрегатный оператор, имеет двоякий смысл:

определить записи в группе на основе значений в помеченном поле;

включить это поле в таблицу Answer.

Примеры:

41) Определить города, в которых находится более двух поставщиков.

S═╦══════НомП════╦═════ИмяП═════╦═════Статус═════╦═════Город══════╗

║ count > 2 ║ ║ ║√ ║

ANSWER═╦══════Город══════╗

1 ║ Москва ║

42) Определить номера поставщиков, поставляющих детали в суммарном количестве более 500.

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║√ ║ ║ sum > 500 ║

ANSWER═╦══НомП═╗

1 ║ П1 ║

2 ║ П2 ║

43) Определить номера деталей, поставляемых партиями в среднем менее 30:

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║ ║√ ║ average < 30 ║

ANSWER═╦══НомД═╗

1 ║ Д14 ║

2 ║ Д3 ║

44) Определить город с максимальным статусом поставщика не более 15.

S═╦══════НомП════╦═════ИмяП═════╦════Статус═════╦═════Город══════╗

║ ║ ║ max <= 15 ║√ ║

ANSWER═╦══════Город══════╗

1 ║ Казань ║

2 ║ Киев ║

3 ║ Рязань ║

Оператор only не является агрегатным оператором, т.е. не выполняет вычислений. Он позволяет выделить группы, в которых записи содержат только одно значение и не содержат каких-либо иных, например:

45) Опеределить, какие поставщики поставляют только детали Д1.

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║√ ║ only Д1 ║ ║

ANSWER═╦══НомП═╗

1 ║ П6 ║

В добавление к вычислению новых полей для каждой записи можно вычислить статистические показатели для групп записей. Для этого агрегатные операторы используются с оператором calc. Calc и соответствующий агрегатный оператор записываются в поле, для которого нужно выполнить вычисления, например:

46) Определить суммарные количества деталей, поставляемых каждым поставщиком:

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║√ ║ ║ calc sum ║

ANSWER═╦══НомП═╦═Sum of Колич══╗

1 ║ П1 ║ 736 ║

2 ║ П10 ║ 288 ║

3 ║ П2 ║ 568 ║

4 ║ ... ║ ║

Группы могут быть определены по значениям нескольких полей, например:

47) Определить суммарные количества деталей каждого номера, поставляемых каждым поставщиком (поставщик может поставлять несколько партий деталей одного номера):

SP════╦════════НомП══════╦════════НомД══════╦════════Колич════════╗

║√ ║√ ║ calc sum as Кол ║

ANSWER═╦══НомП═╦══НомД═╦══════Кол══════╗

1 ║ П1 ║ Д3 ║ 4 ║

2 ║ П1 ║ Д4 ║ 12 ║

3 ║ ... ║ ║ ║

Обычно, когда используется оператор calc, новое поле с результатами вычислений добавляется к таблице Answer. Значение вычисляется для каждой записи в Answer.

Когда calc используется с агрегатным оператором, вычисления выполняются над группами записей. Помещая √ в поле, мы формируем группы, над которыми выполняются вычисления. Если в форме отсутствуют √, вычисления будут выполняться над всеми записями таблицы как над одной группой. Записать √ в одном поле с агрегатным оператором нельзя.

Когда задаются условия выбора записей, тем самым определяются группы для включения в Answer.

48) Определить общее количество поставляемых деталей:

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║ ║ ║ calc sum ║

ANSWER═╦═Sum of Колич══╗

1 ║ 2413 ║

49) Определить номера деталей, поставляемых в количествах, больших 150, и минимальное их количество в партиях:

SP════╦════════НомП══════╦════════НомД══════╦════════Колич════════╗

║ ║√ ║ min > 150,calc min ║

ANSWER═╦══Ном═╦═Min of Колич╗

1 ║ Д9 ║ 300 ║

50) Определить количество поставщиков, поставляющих детали.

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║ calc count ║ ║ ║

ANSWER═╦═Count of НомП═╗

1 ║ 9 ║

51) Определить количество партий поставляемых деталей (общее количество записей в SP):

SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗

║ calc count all ║ ║ ║

ANSWER═╦═Count of НомП═╗

1 ║ 25 ║

Соседние файлы в папке Uchpos