Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Группировка и обобщение данных. Рекомендации по выполнению работы и перечень типовых заданий. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
870 Кб
Скачать

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

«Российский университет транспорта»

(МИИТ)

Институт транспортной техники и систем управления

Кафедра «Управление и защита информации»

М. А. Васильева М. Я. Клепцов

«Группировка и обобщение данных». Рекомендации по выполнению работы и перечень типовых заданий

Учебно-методическое пособие

Москва 2024

УДК 681.3.06

В-19

Васильева М. А., Клепцов М. Я. Группировка и обобщение данных. Рекомендации по

выполнению работы и перечень типовых заданий. Учебно-методическое пособие. 2-е издание. – М.: РУТ(МИИТ). 2024.– 62с.

В учебно-методическом пособии рассмотрены операторы языка SQL диалекта СУБД PostgresPro, относящиеся к агрегатным функциям. Представлены варианты заданий.

Учебно-методическое пособие предназначено для обучающихся по направлению «Управление в технических системах» профиля «Управление и информатика в технических системах» (27.03.04), а также обучающихся по специальности «Компьютерная безопасность» специализации «Информационная безопасность объектов информатизации на базе компьютерных систем» (10.05.01).

Рецензент:

к. т. н., доцент кафедры «Автоматика, телемеханика и связь на железнодорожном транспорте» РУТ (МИИТ) Ваньшин А. Е.

© Васильева М. А., 2024 © Клепцов М. Я., 2024

СОДЕРЖАНИЕ

 

Введение.............................................................................................................

5

Цель работы .......................................................................................................

5

Рекомендации по выполнению работы ...........................................................

5

Краткие сведения об операторах SQL, используемых для выполнения

лабораторной работы ..............................................................................................

6

Агрегатные функции SQL .................................................................................

6

Использование агрегатных функций с NULL значениями.............................

9

Итоги для сгруппированных данных .............................................................

11

Использование предложения GROUP BY..................................................

11

Фильтрация сгруппированных данных, используя предложение HAVING

...............................................................................................................................

13

Изучение операторов ROLLUP и CUBE ....................................................

14

Использование GROUPING SETS...............................................................

20

GROUP BY ().................................................................................................

22

GROUPING ....................................................................................................

23

Задание на лабораторную работу ..................................................................

26

Вариант 1 .......................................................................................................

26

Вариант 2 .......................................................................................................

27

Вариант 3 .......................................................................................................

28

Вариант 4 .......................................................................................................

29

Вариант 5 .......................................................................................................

30

Вариант 6 .......................................................................................................

31

Вариант 7 .......................................................................................................

32

3

 

Вариант 8 .......................................................................................................

33

Вариант 9 .......................................................................................................

34

Вариант 10 .....................................................................................................

35

Вариант 11 .....................................................................................................

36

Вариант 12 .....................................................................................................

37

Вариант 13 .....................................................................................................

38

Вариант 14 .....................................................................................................

39

Вариант 15 .....................................................................................................

40

Вариант 16 .....................................................................................................

41

Вариант 17 .....................................................................................................

42

Вариант 18 .....................................................................................................

43

Вариант 19 .....................................................................................................

44

Вариант 20 .....................................................................................................

45

Вариант 21 .....................................................................................................

46

Вариант 22 .....................................................................................................

47

Вариант 23 .....................................................................................................

48

Вариант 24 .....................................................................................................

49

Вариант 25 .....................................................................................................

50

Индивидуальные задания ...............................................................................

51

Вариант №1.......................................................................................................

51

Вариант №2.......................................................................................................

52

Вариант №3.......................................................................................................

53

Вариант №4.......................................................................................................

54

Вариант №5.......................................................................................................

55

Список литературы .........................................................................................

57

 

4

ВВЕДЕНИЕ

В соответствии с Федеральным государственным общеобразовательным стандартом выпускники, освоившие программу специалитета по специальности

10.05.01 Компьютерная безопасность, и программу бакалавриата по направлению подготовки 27.03.04 Управление в технических системах, должны в том числе освоить общепрофессиональные компетенции, связанные со способностью проектировать базы данных [1], [2], [3]. Для освоения вышеуказанных компетенций в учебном плане имеются соответствующие дисциплины. В рамках преподавания данных дисциплин студенты изучают в том числе язык структурированных запросов SQL (Structured Query Language).

Базы данных являются неотъемлемой частью бизнес-приложений [4], [5], [6], [7], [8], поэтому изучению их проектирования уделяется серьезное внимание [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19]. Помимо знаний о том, как правильно спроектировать схемы БД [19], [20], важно понимать как с ней работать [21], тестировать запросы [22], оценивать быстродействие выполнения скриптов [23], [24].

ЦЕЛЬ РАБОТЫ

Изучить операторы SQL диалекта Postgres Pro, необходимые для группировки и обобщения данных. Научиться создавать запросы с агрегатными1

функциями. Подготавливать отчет, выполненный согласно требованиям ГОСТ 7.32 [25].

РЕКОМЕНДАЦИИ ПО ВЫПОЛНЕНИЮ РАБОТЫ

Работа

производится

с

учебной

базой

данной

AdwentureWorksPostgrePro [26], [27].

1 статистические функции

5

Каждый скрипт должен выполняться в отдельном файле [28], [29] и иметь задание в виде комментария [30]. Всю работу необходимо проводить в системе контроля версий [31], [9], [32], [30], [10]. Отчет по выполненной работе должен быть выполнен с соблюдением ГОСТ по НИР 7.32 [25].

КРАТКИЕ СВЕДЕНИЯ ОБ ОПЕРАТОРАХ SQL, ИСПОЛЬЗУЕМЫХ ДЛЯ

ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ

Агрегатные функции SQL

К агрегатным функциям относятся функции поиска минимального (MIN) и

максимального (MAX) значений, вычисления среднего (AVG) и суммарного (SUM)

значений, нахождения количества элемента (COUNT) [33], [34].

!Агрегатная функция выбирается в предложении SELECT.

В данном предложении возможно различное сочетание только агрегатных функций.

Пример 1

Найти максимальную цену товара.

SELECT MAX("ListPrice") AS "MaxPrice"

FROM "Production"."Product";

Рисунок 1 – Результат выполнения запроса (Пример 1)

Пример 2

Найти среднюю и суммарную цену всех товаров.

SELECT AVG("ListPrice") AS "AvgPrice"

, SUM("ListPrice") AS "SumPrice"

FROM "Production"."Product";

6

Рисунок 2 – Результат выполнения запроса (Пример 2)

Ограничение на тип входных данных – численное значение – имеется для функций расчета средней (AVG) и суммарной (SUM) величины. Для остальных функций можно использовать любые типы данных.

Для фильтрации исходных данных, к которым не будут применены агрегатные функции, используется предложение WHERE. Порядок выполнения в данном случае такой: сначала выполняется предложение FROM, затем фильтруются данные в предложении WHERE, и только в конце выполняются агрегатные функции из предложения SELECT [13].

Пример 3

Найти минимальную цену товара. При этом исключить из рассмотрения товар с ценой равной нулю.

SELECT MIN("ListPrice") AS "MinPrice"

FROM "Production"."Product"

WHERE "ListPrice" > 0;

Рисунок 3 – Результат выполнения запроса (Пример 3)

Пример 4

Показать количество разнообразных цветов товара (ассортимент

цветов).

SELECT COUNT(DISTINCT "Color") AS "CountColors"

FROM "Production"."Product";

7

Рисунок 4 – Результат выполнения запроса (Пример 4)

Пример 5

Показать полный возраст, количество лет, месяцев и дней, зная дату

рождения.

Для выполнения данного запроса можно воспользоваться функцией

DATE_PART(Interval, StartDate, EndDate), которая возвращает

интервал в днях, месяцах или годах соответственно (DAY, MONTH, YEAR)

между начальной и конечной датами. Функция CURRENT_DATE возвращает текущую дату. Функция AGE() рассчитывает интервал между двумя датами.

SELECT

AGE(CURRENT_DATE, '1990-04-06'),

DATE_PART('year'

,AGE(CURRENT_DATE

,'1990-04-06')) AS years,

DATE_PART('month'

,AGE(CURRENT_DATE

,'1990-04-06')) AS months,

DATE_PART('day'

,AGE(CURRENT_DATE

,'1990-04-06')) AS days;

Рисунок 5 – Результат выполнения запроса (Пример 5)

Пример 6

Показать возраст самого пожилого сотрудника.

SELECT DATE_PART('YEAR', AGE(CURRENT_DATE,

MIN("BirthDate"))) AS "Oldest"

FROM "HumanResources"."Employee";

8

Рисунок 6– Результат выполнения запроса (Пример 6)

Пример 7

Найти среднюю цену товара черного цвета.

SELECT AVG ("ListPrice") AS "AvgPrice"

FROM "Production"."Product"

WHERE "ListPrice" > 0 AND "Color" LIKE 'Black%';

Рисунок 7 – Результат выполнения запроса (Пример 7)

!В предложении WHERE нельзя использовать фильтрацию (ограничение) на значения агрегатных функций. Если необходимо ограничить значения агрегатных функций, используется предложение HAVING, о котором будет рассказано ниже.

Использование агрегатных функций с NULL значениями

Большинство агрегатных функций игнорируют NULL значения. NULL

значения могут приводить к неожиданным или некорректным результатам.

Чтобы избежать ошибок, используйте функцию COALESCE() к тем полям таблицы, которые могут иметь значения NULL.

Пример 8

Найти средний вес товара (не учитывать пустые значения). Для решения данного примера можно использовать два подхода.

Решение 1. Использовать функцию COALESCE() для преобразования значений NULL в нули. Подразумевается, что товаров с нулевым весом

(Weight = 0) в таблице Production.Product нет.

9

SELECT AVG(COALESCE("Weight", 0)) AS "AvgWeight"

FROM "Production"."Product"

WHERE "Weight" > 0;

Рисунок 8 – Результат выполнения запроса (Пример 8)

Решение 2. Использовать ограничение IS NOT NULL.

SELECT AVG("Weight") AS "AvgWeight"

FROM "Production"."Product"

WHERE "Weight" IS NOT NULL;

В результате получим такой же результат, как представлено выше

(Рисунок 8).

Для подсчета количества строк в таблице используется функция COUNT(*).

Для подсчета количества строк с игнорированием NULL значений необходимо отфильтровать значения NULL.

Пример 9

Посчитать количество наименований товара.

SELECT COUNT(*) AS "Product Count"

FROM "Production"."Product";

Рисунок 9 – Результат выполнения запроса (Пример 9)

Пример 10

Посчитать количество товара, имеющего атрибут "цвет".

SELECT COUNT("Color") AS "Product Count"

FROM "Production"."Product"

WHERE "Color" IS NOT NULL;

10

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