16 октября 2015

Домашнее задание №4

Описание

Ваш босс хочет знать, какие ключевые слова в тренде на каждой конференции. Для этого ему нужно представление, в котором для каждой конференции записаны три самых часто встречающихся ключевых слова в статьях, поданных на эту конференцию.
Исходники для генерации схемы и данных тут: hw04.zip

Схема и данные

В приложенном архиве находятся файл со схемой БД и скрипт на Питоне, заполняющий таблицы данными
psql -h localhost -U postgres < 01_gen_schema.sql
python 02_gen_data.py

Схема БД

В базе данных есть таблицы Conference, Paper, Keyword и связи многие-ко-многим PaperConference и PaperKeyword. Смысл таблиц и их атрибутов, полагаю, ясен из их названий.

Задание

В результате должно получиться представление со схемой:
conference TEXT, keyword TEXT, count INT
Запись в представлении означает, что в статьях, поданных на конференцию conference ключевое слово keyword упоминается countраз. В представление должны попасть для каждой конференции ключевые слова с наибольшим значением count, в количестве не более трех. Например, из следующих записей
Conf1 KW1 5
Conf1 KW2 8
Conf1 KW3 1
Conf1 KW4 6
в представление должны попасть первая, вторая и четвертая. Если есть несколько ключевых слов с одинаковым значением count и в представление нужно включить только часть из них, то отсортируйте эти ключевые слова лексикографически и возьмите первые. Пример:
Conf1 KW2 8
Conf1 KW4 6
Conf1 KW1 5
-----------
Conf1 KW3 5
Задание можно решить многими способами. Как-то явно фантазию ограничивать не будем, но все же постарайтесь не увлекаться. Вы написали и забыли, а проверяющим читать. Постарайтесь написать комментарии ко всем нетривиальным решениям.