Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_2_SQL.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
70 Кб
Скачать
☆

1.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;

 

При ограничении данных полученных в результате применения агрегатных функций нужно использовать параметр HEVING, выполняющий те же функции что и параметр WHERE, но только с вычисленными значениями. Кроме этого, как правило, на практике группировка данных для применения агрегатной функции некоторого атрибута производится относительно другого атрибута. В этом случае необходимо использовать параметр GROUP BY для группировки данных, относительно которых будет выполняться операция агрегатной функции.

Например:

Найти книги, количество которых после 2000 года превысило 100000 экземпляров

SELECT title, COUNT(yearpub) AS Количество

FROM titles WHERE yearpub > 2000

GROUP BY title

HEVING COUNT(yearpub)>100000;

Если в запросе необходимо выполнить сортировку данных необходимо использовать параметр ORDER BY с указанием атрибута, по которому выполняется сортировка. Можно выполнять сортировку в двух направлениях: по возрастанию – параметр ASC (выполняется по умолчанию) и по убыванию – параметр DESC.

Например:

Реализовать предыдущий запрос и при этом отсортировать название книг в обратном алфавитном порядке.

SELECT title, COUNT(yearpub) AS Количество

FROM titles WHERE yearpub > 2000

GROUP BY title

HEVING COUNT(yearpub)>100000

ORDER BY title DESC;

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

 

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

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

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]