Для вирішення поставленого завдання додайте в новий запит таблиці Замовлено, Замовлення і Клієнти. Конструктор запитів автоматично проставить постійні зв'язки, що існують між цими таблицями на рівні бази даних. У бланк запиту перенесіть поле Назва з таблиці Клієнти і поле КодЗаказа з таблиці Замовлення. В визначення наступних двох полів бланка запитів введіть одну і ту ж рядок: ССіr ([Ціна] * [Кількість] * (1- [Знижка]) / 100). Останнім додайте поле Дата Розміщення з таблиці Замовлення. Для того щоб скористатися можливостями угруповання, потрібно натиснути на панелі інструментів кнопку Групові операції (кнопка із зображенням грецької букви Σ). У бланку запиту з'явиться рядок з назвою Групова операція, для кожного поля в якому зазначено значення Угруповання. Змініть ці значення для другого поля на значення Count, для третього - на Avg, для четвертого - на Sum, після чого надайте полях нові імена - Кількість замовлень, Середня вартість і Повна вартість. Для поля ДатаРазмещенія значення угруповання необхідно замінити на Умова (після чого конструктор автоматично зніме прапорець Висновок на екран) і в рядку Условие отбора ввести наступний рядок: Between # 01.01.98 # And # 31.12.98 #. Останнє, що потрібно зробити - вказати для поля Повна вартість порядок сортування по спадаючій. Одержаний запит представлений на рис. 2.4.
Мал. 2.4. Запит з угрупованням
б). У таблиці 2.3 перераховані всі можливі значення властивості групові операції.
Таблиця 2.3. Можливі значення властивості Групові операції.
Вказується для полів, за співпадаючими значеннями яких відбувається об'єднання записів в одну.
Вказується для обчислюваних полів.
Вказується для полів, які не повинні потрапити в результуючий набір даних, але за якими перевіряється умова. Умова для такого поля перевіряється до виконання операції групування. Якщо для поля ввести умову і в поле. Групові операції вказати угруповання, то умова буде перевірятися вже після угруповання. Для першого випадку в операторі SQL використовується пропозицію WHERE, a для другого - HAVING.
Таблиця 2.4. Статистичні функції.
Повертає суму значень, що містяться в заданому полі запиту в записах, згрупованих в одну. Синтаксис: Sіт (вираз). Аргумент вираз може містити або назва поля, або вираз, яке виконує будь-які обчислення. Вираз може включати імена полів, константи і функції. Функції можуть бути обумовленими користувачем (в модулі), але не можуть бути іншими статистичними функціями. Функція Sum пропускає записи зі значенням Null в даному полі.
Обчислює арифметичне середнє набору чисел, що містяться в зазначеному поле запиту в записах, які входять в одну угруповання. Синтаксис: Avg (виpaжeнue). Зауваження щодо аргументу вираження і полів зі значенням Null ті ж, що і для функції Sum.
Повертають відповідно мінімальне і максимальне значення з набору значень, що містяться в зазначеному поле запиту в межах одного угруповання. Синтаксис: Мin (вираз), Мах (вираз). Зауваження - ті ж.
Повертає кількість записів, що об'єднуються в одну при угрупованню. Синтаксис: Соіnt (вираз). Вираз може бути таким же, як і для вище описаних статистичних функцій. Функція Count, так само як і інші функції, не підраховує записи, що містять Null в полях, зазначених в вираженні. Тому, щоб уникнути дурних помилок, потрібно вказувати або обов'язкові для введення поля (які гарантовано будуть містити будь-яке значення - наприклад, первинний ключ), або підстановлювальний знак зірочки (наприклад, Count (*)).
Обчислює величину зміщеного стандартного відхилення по набору значень, що містяться в зазначеному поле запиту для кожного угруповання. Синтаксис: StDev (вираженue). Зауваження з приводу висловлення і полів зі значенням Null ті ж, що і для функції Sum. Крім того, якщо угруповання містить менше двох записів, то функція повертає значення Null, що означає неможливість обчислення стандартного відхилення. Стандартне відхилення (середньоквадратичне відхилення) - параметр, який вказує величину розкиду функції розподілу біля середнього значення. Він дорівнює квадратному кореню з моменту для квадрата відхилень від середнього.
Повертає значення зміщеною дисперсії, що обчислюється по набору значень, що містяться в зазначеному поле запиту для кожного угруповання. Синтаксис: Var (вираз). Зауваження з приводу висловлення і полів зі значенням Null ті ж, що і для функції Sum. Якщо угруповання містить менше двох записів, функція повертає значення Null, що означає неможливість обчислення дисперсії. Дисперсія - квадрат значення середньоквадратичного відхилення, міра відмінності значень в групі від середнього.
Повертають значення поля відповідно з першої і останньої записи набору записів в межах кожної угруповання. Синтаксис: First (вираз), Last (вираз). Вираз - таке ж, як і для інших статистичних функцій. Оскільки записи зазвичай повертаються без будь-якого спеціального порядку (крім випадків, коли запит містить пропозицію ORDER BY), ці функції повертають випадкові дані
в). Слід звернути увагу на те, що хоча для полів Середня вартість і Повна вартість були вказані групові операції Avg і Sum відповідно, після збереження запиту конструктор підставив назви цих функцій безпосередньо в визначення полів, а значення групової операції змінив на Вираз. У той же самий час, поле Кількість замовлень залишилося без змін, оскільки в якості вираження для функції Count вказано просто ім'я відповідного поля таблиці.
г). При обчисленні полів Середня вартість і Повна вартість використовувалася функція ССіr, що є однією з функцій перетворення типів. Хоча частіше ці функції використовуються при програмуванні на Visual Basic, в запитах теж іноді доводиться їх використовувати. Найчастіше ці функції використовуються в обчислюваних полях запитів. Наприклад, якщо з таблиці в запит додати поля Кількість і Вартість, а потім додати обчислюване поле Ціна: [Вартість] / [Кількість], то в результуючому наборі даних в цьому полі з'являться значення, що містять велику кількість знаків дробової частини.