Разные СУБД / Лаба 5 / БД лаб 5
.docxЦель работы: познакомиться с основным функционалом и особенностями работы в PostgreSQL.
Ход работы
Задание 3:
Определите все модели какого-либо товара (принтер, ПК или ноут, по желанию), продажи которых в январе были ненулевыми (если нулевых в таблице нет, то возьмите вместо него минимальное значение по массиву).
SELECT type, sales_2023[1] AS январь
FROM Products
WHERE sales_2023 [1]> 40 and type = 'pc'
Добавьте в предыдущий запрос поле с такими же показателями продаж за февраль и сравните результаты. Визуализируйте данные в виде столбчатой диаграммы.
SELECT type, sales_2023[1] AS январь, sales_2023[2] AS февраль
FROM Products
WHERE sales_2023 [1]> 40 and type = 'pc' and sales_2023 [2]> 25
Сравните продажи за год трех любых моделей какого-либо товара: выведите по столбцам количество проданных моделей в каждом месяце. Используйте функцию unnest(), метод self-join и фильтр where. Визуализируйте результат в виде линейной или столбчатой диаграммы.
SELECT
unnest(A.sales_2023) AS model_1521,
unnest(B.sales_2023) AS model_1641,
unnest(C.sales_2023) AS model_1561
FROM
Products A
JOIN
Products B ON A.model = 1521 AND B.model = 1641
JOIN
Products C ON A.model = 1521 AND C.model = 1561;
Задание 4:
Сделайте запрос к системному представлению pg_stat_database. Каждая строка этой таблицы выводит статистику, собранную для одной базы данных.
SELECT * FROM pg_stat_database;
Ответьте на следующие вопросы:
Установите, сколько транзакций в базе productDB (или другой, по выбору) было подвергнуто откату.
С помощью системного представления pg_stat_database и xact_rollback - количество транзакций в этой базе данных, для которых был выполнен откат транзакции.
Определите процент транзакций, подвергнутых откату, от общего числа всех транзакций. Используйте формулу откат транзакций
xact_commit - количество зафиксированных транзакций в этой базе данных
(104*100)/ (104 +10179) = 1,01%
Изучите, нецелочисленное деление в Postgres.
Имелись ли в каких-либо базах данных взаимные блокировки транзакций и если да, то сколько?
Выведите статистику по количеству строк, вставленных в какую-либо базу данных, измененных строк и удаленных из нее строк.
tup_inserted - количество строк, вставленное запросами в этой базе данных;
tup_updated - количество строк, изменённое запросами в этой базе данных;
tup_deleted - количество строк, удалённое запросами в этой базе данных.
Задание 5:
Сделайте запрос к системному представлению pg_stat_activity. Она показывает статистику по текущей активности в базе данных.
SELECT * FROM pg_stat_activity;
Посчитайте, какие значения состояния серверного процесса представлено в отчете. Посчитайте, сколько клиентов разных состояний
имеется в текущих процессах.
SELECT state, COUNT(*) AS количество клиентов
FROM pg_stat_activity
GROUP BY state;
Вывод: в ходе лабораторной работы познакомились с основным функционалом и особенностями работы в PostgreSQL.