Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БазыДанных / Лаб_SQL / Lab_2_SELECT_1.doc
Скачиваний:
135
Добавлен:
14.04.2015
Размер:
68 Кб
Скачать

3. Вычисления внутри select.

SQLпозволяет выполнять различные арифметические операции над столбцами результирующего отношения. В конструкции<список_выбора>можно использовать константы, функции и их комбинации с арифметическими операциями и скобками. Например, чтобы узнать, сколько лет прошло с 1992 года (год принятия стандарта SQL-92) до публикации той или иной книги можно выполнить команду:

 

    SELECT title, yearpub-1992 FROM titles WHERE yearpub > 1992;

 

В арифметических выражениях допускаются операции сложения (+), вычитания (-),

деления (/), умножения (*), а также различные функции (COS, SIN, ABS –

абсолютное значение и т.д.).

 

В SQLтакже определены так называемые агрегатные функции, которые совершают действия над совокупностью одинаковых полей в группе записей. Среди них:

  • AVG(<имя поля>)- среднее по всем значениям данного поля

  • COUNT(<имя поля>)илиCOUNT (*)- число записей

  • MAX(<имя поля>)- максимальное из всех значений данного поля

  • MIN(<имя поля>)- минимальное из всех значений данного поля

  • SUM(<имя поля>)- сумма всех значений данного поля

 

Следует учитывать, что каждая агрегирующая функция возвращает единственное значение.

 

Примеры: определить дату публикации самой "древней" книги в нашей базе данных

 

SELECT MIN(yearpub) FROM titles;

 

подсчитать количество книг в нашей базе данных:

 

SELECT COUNT(*) FROM titles;

 

Область действия данных функции можно ограничить с помощью логического условия. Например, количество книг, выпущенных после 2000 года:

 

SELECT COUNT(*) FROM titles WHERE yearpub > 2000;

 

4. Функции для работы с датой

 

В MS Access предусмотрен целый набор встроенных функций дат и времени Перечислим некоторые из них:

Date() -текущая дата, т е сегодняшнее число, месяц и год;

Dау(дата) -извлекает из даты день, например дата - 12,09,97,результат применения функции –число12;

Моnth(дата) -извлекает из даты месяц, например дата - 12,09,97,результат применения функции -число 9;

Уеаг(дата) -извлекает из даты год, например дата - 12-09,97,резуль­тат применения функции -число 97;

Weekday(дата) -извлекает из даты день недели в американской системе нумерации дней, а именно в примере -дата 12,09,97,результат применения функции - число 6,что соответствует пятнице,

DatePart(HHTepBan, дата) -здесь аргумент "интервал" -это сокращенное название нужного компонента даты, а дата -конкретное значение даты или имя поля с датой

Например:

DatePart("H",#12,09,97#) - день недели - 6, т е пятница,

DatePart("HH",#12,09,97#) - неделя года - 37,

DatePart("K",# 12,09,97#) - квартал года - 3

DatePart("a",#12,09,97#) - день -12,

DatePart("M",#12,09,97#) - месяц - 9, \ DatePart("rrrr",#12,09,97#) - год -1997

 

Пример запроса. Определить, сколько лет прошло с момента выхода статьи описавшей стандарт SQL (предположим, что название статьи ”СтандартSQL”)

 

SELECT Month(Date()-yearpub)

FROM titles INNER JOIN publishers ON

titles.pub_id = publishers.pub_id

WHERE publisher = "Стандарт SQL";

 

5. Задание к лабораторной работе

 

Замечания по ходу выполнения лабораторной работы.

  • Для просмотра результата выполнения запросов необходимо чтобы в таблицах были внесены данные соответствующими сформулированным запросам. При этом данные в запросах (даты, фамилии, количество и т.п.) могут быть изменены по факту внесенных данных в БД.

  • При выполнении заданий лабораторной работы все вычисляемые поля заменять синонимами, используя опцию AS в предложении SELECT.

Например: SELECT COUNT(*) AS Количество_строк FROM titles;

 

Реализовать следующие запросы средствами SQL:

 

  1. Найти заказы сделанные в январе.

  2. Найти изделия, которые поставляются в количестве не меньше 10, и не больше 100.

  3. Получить список изделий получаемых заказчиком “з-д «Красный луч»”, цена которых более 50 тыс. грн.

  4. Сколько деталей «Болт» по всем заказам получил заказчик “з-д «Красный луч»”.

  5. Определить наименования деталей заказанных в период с 6/10/97 по 10/10/97, которые не заказывал з-д «Красный луч».

  6. Получить список наименований изделий, поставки которых превышают 10 тыс.

  7. На какую сумму заказано деталей з-дом «Красный луч»

  8. Какие заказчики заказывали деталь «Болт».

  9. Определить среднее количество поставок детали «Болт» за 1997 год.

  10. Найти заказчика, заказавшего самую дорогую деталь.

Соседние файлы в папке Лаб_SQL