Skip navigation.
Home

Задания для магистров первого года

С прошлого года остается набор начальных заданий на основы SQL:
1) Выбрать название и наибольшую зарплату по каждому отделу, упорядочить по возрастанию. Если в отделе нет сотрудников, выдать 0.
2) В каком регионе работает больше всего сотрудников?
3) Выбрать сотрудников, которые работали в разных городах. 
-- Аналитические функции
4) Выбрать сотрудников IT и Executive, их зарплату , пронумеровать их по зарплате (1-ый сотрудник в отделе получает больше всех) , упорядочить по имени отдела и номеру в отделе
-- Рекурсивные запросы
5) Выбрать всех начальников сотрудника c заданными фамилией и именем
-- Интерфейсы взаимодействия с СУБД
6) С использованием любого интерфейса взаимодействия с PostgreSQL создать редактор таблицы, поддерживающий транзакционную работу. Например, редактируем таблицу Employees из схемы HR. Программа должна получать у пользователя учетные данные, подсоединяться к СУБД. После этого выводить меню, содержащее примерно следующий набор команд: "вставить запись", "изменить запись", "показать содержимое", "показать запись по id", "найти сотрудников по фамилии", "откатить изменения", "применить изменения", "выйти". После этого в цикле позволять выполнять выбранные операции. Делать commit только при явном запросе пользователя. При выходе - выполнять откат активной транзакции.
-- JSP
7)Изменить существующее приложение, так чтобы а) разбор запроса выполнялся один раз за сессию, б) пользователя спрашивали логин и пароль, который использовался бы при соединении с СУБД. Проверить, что используется пул соединений. Если не используется, сделать так, чтб использовался (необязательное задание)
-- PL/pgSQL
8) Написать функцию, которая TRUNCATE'ит таблицы, совпадающие с передаваемым в качестве параметра шаблоном в схеме public или удаляет из них всю информацию (в зависимости от значения второго параметра).
9) Написать функцию, которая будет удалять все представления в cхеме public и, в зависимости от значения параметра, возвращать таблицу имен представлений, которые удалось (или не удалось) удалить в выходном параметре. В случае, если мы сообщаем, что представление не удалось удалить, подобного рода ошибку игнорируем.  Если не сообщаем, то подобная ошибка фатальна.
-- Написание хранимых процедур на Си
10) Написать функцию, которая выдаст содержимое /etc/passwd в виде таблицы (необязательное задание)
-- Агрегаты
11) Написать агрегаты для мат. ожидания и дисперсии.
-- MVCC
12) Спровоцировать ошибку could not serialize access due to concurrent update.
-- Оптимизация запросов (на данной схеме)
13) select avgmark from students where lower(name)=:name and lower(surname)=:surname; -- где :name, например, равно 'user_repcolumn_group_1', a surname='crramuvvjimuhe' не меняя запроса
14) select surname,lection_name from lections,students,lect_stud where lect_id=lections.id and stud_id=students.id and ( upper(surname)=:surname or upper(lection_name)=:lname); -- например, select surname,lection_name from lections,students,lect_stud where lect_id=lections.id and stud_id=students.id and ( upper(surname)='CTGXZBULLJREKV' or upper(lection_name)='DUAL');
-- Триггеры и секционирование
15) Дописать необходимые триггеры для секционирования по диапазону (см. пример в материалах к лекциям).
-- Правила
16) На основе HR-схемы создать с помощью правил обновляемое представление: сотрудники отделов, расположенных в Сиэтле. Представление должно содержать имя и фамилию сотрудника, дату найма, зарплату, название отдела (считаем, что department_name - уникальное поле) и допускать операции переименования сотрудников, изменения зарплаты сотрудников, перевод сотрудника в другой отдел, если он имеет отделение в Сиэтле. Должно быть возможно добавление новых сотрудников в отделы, расположенные в Сиэтле посредством данного представления, а также удаление сотрудников из отделов в Сиэтле, если их выслуга лет меньше 15. Запретить изменение первичного ключа записи.
-- Представления и материализованные представления
17) Дописать триггеры, необходимые для работы материализованного представления из материалов к лекциям
-- Создание дампов БД
18) Используя системный планировщик, настроить периодическое создание дампов БД. Восстановить кластер БД из созданных дампов.
-- PITR
19) Перевести СУБД в режим архивирования журналов транзакций. Написать и запланировать скрипт для создания периодических базовых бэкапов. Восстановиться из созданных бэкапов на определенный момент времени (необязательное задание).
-- HA
20) Настройка Streaming replication между двумя серверами СУБД (необязательное задание).
21) Настройка data sharding посредством pgpool-II (необязательное задание).