Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

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






Обчислення у запитах






Запити до зв'язаних таблиць

За потреби створити запит до кількох таблиць (або запитів) їх слід вибрати у вікні Добавление таблицы так, як при створенні схеми даних. Вибрані таблиці зображуються у верхній частині Конструктора запитів; якщо між ними є зв'яз­ки, то вони також відображуються. Вибір полів на бланку запиту відбувається так само, як при створенні запиту до однієї таблиці.

Запит 6 Вивести відомості про всі виплати всім співробітникам. У результаті мають міститися поля ПІБ, ДАТА ВИПЛАТИ і СУМА.Вміст бланка запиту показано у таблиці на рис. 6.

 

Поле ПІБ Дата виплати Сума-
Имя таблицы Співробітники Виплати Виплати
Вывод на зкран так так так

Рис. 6. Бланк запиту 6

Обчислення у запитах

У СУБД АССЕ88 існують два види обчислень у запитах:

— створення нових обчислювальних полів;

— обчислення підсумкових значень.

Для створення обчислювального поля потрібно у бланку запиту в рядку Поле ввести конструкцію такого виду:

< Назва._обчислювального_поля>: < Вираз>.

Вираз задає правило, за яким обчислюють значення у створюваному полі. Він може містити знаки математичних операцій, дужки, стандартні функції АССЕ88, імена полів таблиці, до якої створюється запит, взяті у квадратні дужки. Якщо потрібно використати поле іншої таблиці, то вказують таку конструкцію: [ім'я таблиці].[ім'я поля]

Запит 7 Вивести дані про розміри всіх виплат співробітникові Петренку П.П. за останні 60 днів із врахуванням відрахувань у пенсійний фонд (2%). Вміст бланка запиту показано у таблиці на рис. 7.

 

Поле ПІБ Дата виплати Сума Пенсійний фонд: CCur([Сума]*0, 02)
Имя таблицы Співробітники Виплати Виплати  
Вывод на экран так так так так
Условие отбора «Петренко П.П.» > date()-60    

Рис. 7. Бланк запиту 7

Результат запиту показано на рис. 8.

Рис. 8. Результат виконання запиту 7

Зауваження. Функція CCur переводить значення числового типу в значення грошового типу, додаючи 2 знаки після коми і позначення грошової одиниці. Без використання цієї функції значення у полі Пенсійний фонд виглядають як звичайні цілі числа.

Для обчислення підсумкових значень необхідно внести у бланк запиту рядок Групповая операция натисненням однойменної кнопки на стандартній панелі інструментів. СУБД АССЕ88 дає змогу виконувати такі групові операції над даними:

• Группировка операція призначена для групування даних у тому полі, в якому вона встановлена (відповідні записи виводяться підряд);

• Sum — знаходження суми значень у відповідному полі;

• Avg (Average) — знаходження середнього арифметичного;

• Мin — знаходження мінімального значення у полі;

• Мах — знаходження максимального значення у полі;


• Count —знаходження кількості записів;

• StDev —знаходження середньоквадратичного відхилення;

• Va r — знаходження дисперсії;

• First — знаходження першого значення;

• Last — знаходження останнього значення.

Запит 8 Отримати загальну суму виплат, зроблених кожному співробітникові. У від­повіді вивести поля ПІБ і ЗАГАЛЬНА СУМА. Вміст бланка запиту показано у таблиці на рис. 9.

 

Поле Код ПІБ Сума
Имя таблицы Співробітники Співробітники Виплати
Групповая операция Группировка Группировка Sum
Вывод на экран   так так
Условие отбора      

Рис. 9. Бланк запиту 8

При виконанні таких запитів ACCESS автоматично присвоює ім'я підсум­ковому полю за правилом Назва_групової_операції_Назва_поля_таблиці (у да­ному разі: Sum_Cyмa). Щоб присвоїти полю бажане ім'я, потрібно у бланку запиту встановити вказівник миші на назві поля, в якому обчислюється підсум­кове значення (у даному разі — Сума), викликати контекстне меню поля і ви­брати команду Свойства. У рядку Подпись необхідно вказати потрібне ім'я поля. При перегляді результату запиту можна побачити нову назву підсумко­вого поля.

Запит 9 Отримати середнє значення виплат, зроблених кожному співробітникові протягом 2001 р. У відповіді вивести поля ПІБ та СЕРЕДНЯ ВИПЛАТА ЗА 2001 РІК. Вміст бланка запиту показано у таблиці на рис. 10.

Зауваження. Якщо при виконанні групових операцій на поле встановлюється певна умова (у даному разі таке полеДата виплати), то в рядку бланка Групповая операция для цього поля необхідно встановити значення Условие. Виве дення на екран для такого поля заборонено.

 

Поле Код П1Б Дата виплати Сума
Имя таблицы Співробіт­ники Співробіт­ники Виплати Виплати
Групповая операция Групппровка Группировка Условие Avg
Вывод на экран   так   Так
Условие отбора     Like «*01»  

Рис. 10. Бланк запиту 9

Доцільно поекспериментувати з розглянутим запитом, змінивши у полі ДАТА ВИПЛАТИ значення Условие на Группировка і встановивши для цього поля виведення на екран.

При створенні запитів на обчислення підсумкових значень важливо стежив за поміщенням полів у бланк запиту. Навіть наявність у бланку певного полябез його виведення на екран може суттєво впливати на результат запиту.

Запит 10 Обрахувати загальний фонд заробітної плати та розмір середньої виплат за 2001 р. У результаті вивести поля ЗАГАЛЬНА СУМА ВИПЛАТ і СЕРЕДНЯ ВИПЛАТА.

Вміст бланка запиту показано у таблиці на рис. 11. Результат запиту містити^ один запис із двох полів, назви яких вказані у властивостях підсумкових полів

 

Поле Дата виплати Сума Сума
Имя таблицы Виплати Виплати Виплати ]
Групповая операция Условие Sum Avg
Вывод на экран   так так
Условие отбора   Like «*01»  

Рис. 11. Бланк запиту 10

Слід зазначити, що у бланку запиту нема поля, що ідентифікує кожний окремий запис (КОД). За його наявності (навіть без виведення на екран) Під­сумкові значення обчислювалися би не для всієї таблиці, а для кожного спів­робітника окремо.

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал