Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 5_2 агрегатные функций в операторе выбора....doc
Скачиваний:
2
Добавлен:
17.11.2018
Размер:
151.55 Кб
Скачать

Пример 2.3.

Можно применять агрегатные функции также и без операции предварительной группировки, в этом случае все отношение рассматривается как одна группа и для этой группы можно вычислить одно значение на группу.

Обратимся к базе данных "Сессия" (таблицы R1, R2, R3).

R1 = (ФИО, Дисциплина, Оценка); R2 = (ФИО, Группа); R3 = (Группы, Дисциплина)

R1

ФИО

Дисциплина

Оценка

Петров Ф. И.

Базы данных

5

Сидоров К. А.

Базы данных

4

Миронов А. В.

Базы данных

2

Степанова К. Е.

Базы данных

2

Крылова Т. С.

Базы данных

5

Сидоров К. А.

Теория информации

4

Степанова К. Е.

Теория информации

2

Крылова Т. С.

Теория информации

5

Миронов А. В.

Теория информации

Null

Владимиров В.А.

Базы данных

5

Трофимов П. А.

Сети и телекоммуникации

4

Иванова Е. А.

Сети и телекоммуникации

5

Уткина Н. В.

Сети и телекоммуникации

5

Владимиров В. А.

Английский язык

4

Трофимов П. А.

Английский язык

5

Иванова Е. А.

Английский язык

3

Петров Ф. И.

Английский язык

5

R2

ФИО

Группа

Петров Ф. И.

С-08

Сидоров К. А.

С-08

Миронов А. В.

С-08

Крылова Т. С.

С-08

Владимиров В. А.

П-07

Трофимов П. А.

П-07

Иванова Е. А.

П-07

Уткина Н. В.

П-07

R3

Группа

Дисциплина

С-08

Базы данных

С-08

Теория информации

С-08

Английский язык

П-07

Английский язык

П-07

Сети и телекоммуникации

  1. Найдем количество успешно сданных экзамены:

Запрос будет выглядеть:

SELECT COUNT(*)

FROM R1

WHERE Оценка>2

  1. Найдем количество успешно сданных экзамены по дисциплинам:

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

Запрос будет выглядеть:

SELECT Дисциплина, COUNT(DISTINCT Оценка)

FROM R1

WHERE Оценка IS NOT NULL and Оценка>2

GROUP BY Дисциплина

Результат:

Дисциплина

COUNT(DISTINCT R1 .Оценка)

Базы данных

4

Теория информации

2

Сети и телекоммуникации

3

Английский язык

4