14 декабря 2015

Схемы БД ко второй контрольной

На второй контрольной надо будет писать запросы разной степени сложности. Сами запросы вы увидите во время контрольной, а схемы БД можно поизучать уже сейчас.

Вариант 21 "Пироги" (почти те самые, но с некоторыми изменениями)
Вариант 23 "Банк"



01 декабря 2015

Схема БД для контеста

Контест посвящен космическим путешествиям!

Схема БД тут.
А тут SQL-скрипт, генерирующий данные.

 А  тут запросы

Оба скрипта доступны в SQooL в виде шаблона "Контест 2 декабря"

Напомню правила:

  • Баллы можно получить за авторство запросов и за решение
  • Автор запроса должен написать запрос в человекочитаемом текстовом виде, дать ему оценку по шкале "простой" - "средний" - "сложный" - "никто не решит!", написать свое каноническое решение и прислать мне по почте. 
    • У нас не будет много времени на уточнение решения, поэтому постарайтесь делать канонические решения правильными. 
    • Каноническое решение должно давать детерминированный ответ. Лучше всего делать ответ упорядоченным и оговаривать условие сортировки в тексте
  • В процессе решения на паре вы выбираете запросы из имеющихся, решаете и присылаете мне ответы. Постараюсь проверять в реальном времени. За правильное решение запроса со стоимостью P каждый из N решивших получает P/(N+1) баллов. Автор получает тоже P/(N+1) балл, при условии что запрос вообще хоть кто-то решал (была хоть одна попытка).
Пример запроса:

Найти всех пилотов, водивших корабли на планеты с диктатурой. В ответе должны быть имена пилотов, отсортированные по возрастанию.
Простой.
Решение: 

SELECT DISTINCT C.name FROM Commander C JOIN Flight F ON(C.id = F.commander_id) JOIN Planet P ON (F.planet_id = P.id) JOIN Government G ON (G.id = P.government_id)
WHERE G.value = 'диктатура'

ORDER BY name;

25 ноября 2015

Тренировочный контест

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


Запросы

  • Работник-чемпион по количеству интервью 
  • У кандидатов с вердиктами 'soft accept' и 'strong accept' найти MAX и MIN средние баллы за интервью и выветси данные о соответствующих кандидатах
  • Найти кандидатов, подавшихся на >1 вакансию
  • Найти противоречия в данных, например:
    • несовпадения дат
    • проигнорированный флажок фильтрации
    • принятые ('* accept') кандидаты с низким баллом (например < 2.0)

23 октября 2015

Практика 21 октября. Исходники и ДЗ

Исходники, использованные на практике 21 октября

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

Мы хотим организовать ключевые слова, характеризующие содержание статьи или интересы ученого, в деревянную иерархию. Примером такой иерархии может служить ACM Computing Classification System [1]
Иерархия представляет из себя лес, где корнями являются очень широкие темы, а каждый последующий уровень постепенно тему сужает.
Статья может быть связана с любыми элементами этой классификации, на любом уровне.
Нужно придумать схему хранения этой классификации в БД и связи статей с темами и написать запросы:
  • добавляющий новую тему с указанной родительской темой (приветствуется оформление в виде хранимой процедуры)
  • показывающий всё поддерево тем, начиная с заданной. Результат должен быть удобен для обработки приложением, чтобы ему не нужно было прикладывать чрезмерных усилий, чтобы напечатать дерево. Добавлять в метки пробелы-отступы, однако, не нужно.
  • выдающий все статьи, проассоциированные с темами из поддерева с заданным корнем
  • находящий ближайшего общего предка для двух заданных тем
Запросы приведены в порядке возрастания сложности (как мне кажется), так что начните с самых простых