- •Рецензенты:
- •Введение
- •Содержание
- •1. Цель, задачи и реализуемые компетенции
- •2. Формулировка задания
- •3.2 Теоретическая часть курсового проекта
- •3.3 Практическая часть курсового проекта
- •3.3.1 Обследование предметной области
- •3. Структура работы
- •1. Теоретическая часть
- •2. Практическая часть
- •3.1 Введение к курсовому проекту
- •3.3.2 Разработка технического задания
- •3.3.3 Концептуальное проектирование
- •3.3.4 Инфологическое проектирование
- •3.3.5 Реляционная модель бд
- •3.3.6 Даталогическая модель бд
- •3.3.7 Запросы к базе данных
- •3.3.8 Разработка механизмов защиты данных от несанкционированного доступа
- •3.3.9 Требования к техническому обеспечению
- •3.3.10 Инструкция по использованию базы данных
- •3.3.11 Заключение
- •3.3.12 Список используемой литературы
- •3.3.13 Приложения
- •4. Общие требования к написанию и оформлению проекта
- •4.1 Оформление пояснительной записки
- •5. Последовательность выполнения задания
- •6. Критерии оценивания Проекта
- •7. Порядок защиты проекта
- •Список рекомендуемой литературы
- •Internet-ресурсы
- •Приложение 1
- •Направление (специальность) _______________________________________
- •Задание на курсовую работу (проект)
- •Приложение 2
- •Курсовой проект
- •Приложение 3
- •1 Безусловная выборка значений
- •2 Простая выборка
- •3 Выборка уникальных значений
- •4 Выборка вычисляемых значений
- •5 Выборка с условием
- •6 Выборка с упорядочением
- •7 Выборка с использованием оператора between
- •8 Выборка с использованием оператора in (принадлежит)
- •9 Выборка с использованием шаблонов
- •Имя поля like строковая константа
- •10 Выборка из связанных таблиц
- •Простое соединение
- •Соединение с дополнительным условием
- •Соединение трех таблиц
- •11 Использование группировки данных при организации запросов
- •Использование группировки данных совместно с условием
- •Использование having
- •12 Использование квантора существования в запросах
- •13 Объединение множеств
- •Субд ms Visual FoxPro
- •14 Модификация данных в таблицах
- •15 Удаление данных
- •16 Добавление записей
- •Insert into таблица [(поле [,поле] ...)] values (константа [,константа]...)
- •Insert into таблица [(поле [,поле] ...)] подзапрос
- •17 Запросы по дате
- •18. Соединение отношений. Оператор join
- •19. Коррелированные и некоррелированные подзапросы
- •20. Вычисления в таблицах. Команда calculate
19. Коррелированные и некоррелированные подзапросы
В некоторых случаях необходимо выбрать данные из таблицы, основываясь на результатах дополнительных выборок из этой же таблицы. Такие выборки называются коррелированными. Некоррелированным называется подзапрос, который не зависит ни от какого внешнего запроса. Некоррелированный подзапрос не зависит от строки, которую рассматривает внешний запрос. Внешним или главным запрос называется запрос, в котором содержатся все подзапросы. Синтаксис подзапроса такой же, как и у внешнего запроса. Подзапрос записывают в скобках.
Рассмотрим рисунок 19.1, на котором представлен пример получения коррелированного подзапроса. В левой части рисунка показана таблица Table3. В командном окне записан запрос с подзапросом, который использован для выборки товаров, у которых цена меньше, чем средняя. В правой части рисунка показан результат выполнения запроса (Query).
Рисунок 20.1 – Получение коррелированного подзапроса
20. Вычисления в таблицах. Команда calculate
В СУБД Visual FoxPro команда
CALCULATE eExpressionList[Scope] [FOR Expression1]
[WHILE Expression2 [TO VarList | TO ARRAY ArrayName]
[NOOPTIMIZE] [IN nWorkArea | cTableAlias]
выполняет финансовые и статистические операции с полями таблиц или с выражениями, включающими поля, используя в качестве элементов eExpressionList приведенные в таблице 20.1 функции.
Таблица 21.1- Функции, употребляемые в eExpressionList команды CALCULATE
Функция |
Описание |
AVG(nExpression) |
Вычисляет среднее арифметическое всех значений nExpression |
CNT() или COUNT() |
Возвращает число записей, удовлетворяющих условиям, заданным Scope, FOR и WHILE |
MAX(eExpression) |
Возвращает максимальное изо всех значений eExpression. Тип eExpression может быть Character, Date, DateTime, Currency и любой числовой |
MIN(eExpression) |
Возвращает минимальное изо всех значений eExpression. Тип eExpression может быть Character, Date, DateTime, Currency и любой числовой |
NPV(nExpression1, nExpression2 [, nExpression3]) |
Вычисляет величину чистой приведенной стоимости инвестиции, используя ставку дисконтирования nExpressionl, а также стоимости (nExpressionl) будущих выплат (отрицательные значения) и поступлений (положительные значения). Ставка дисконтирования nExpressionl задается не в процентах, а в виде числа от 0 до 1; nExpression2 задает поле или выражение с именем поля или числовое выражение, значения которого интерпретируются как будущие выплаты или поступления. nExpressionl - необязательное начальное вложение капитала. Не включается, если предполагается произвести начальное вложение в конце первого периода; такое начальное вложение задается в первой записи поля, причем в виде отрицательного числа |
STD(nExpression) |
Вычисляет стандартное (средне квадратичное) отклонение величин, возвращаемых nExpression. Средне квадратичное отклонение std величин х1, х2, ..., хn от а вычисляется по формуле
std=
|
VAR(nExpression) |
Вычисляет дисперсию D величин, возвращаемых nExpression. Она равна квадрату стандартного отклонения: D — std2. |
Помимо перечисленных в таблице функций, выражения eExpressibnList могут содержать и иные функции. Однако функции таблицы не могут быть аргументами иных функций. Так, можно записать команду calculate Avg(Sqrt(Price)), но следующая команда недопустима: calculate Sqrt(Avg(Price))
В результатах, возвращаемых функциями, учитываются только записи, удовлетворяющие условиям, заданным Scope, FOR и WHILE. Поля, содержащие NULL, при вычислениях CALCULATE не учитываются.
Пример 20.1. Вычисляются средняя и максимальная цены книг, а также стандартное отклонение цен по данным, имеющимся в таблице Books. Результаты сохраняются в массиве calcResults. В последний элемент массива заносится количество вовлеченных в вычисления записей.
set talk off
select Books
&& Записываем результаты в массив calcResults
calculate Avg(Price), Max(Price), Std(Price), Cnt() to array calcResults
&& Печать результата
display memory like calcResults
Возможный результат:
calcResults
N 195.71 (195.71428571)
N 210.00 (210.00000000)
N 10.33 (10.32630878)
N 14 (14.00000000)
