Упражнения выполняются на базах данных, описание которых приводится ниже.
Ниже приводится список рейтинговых упражнений первого этапа, необязательных к решению с точки зрения сертификации и продвижения по этапам.
Указывается номер, под которым упражнение фигурирует в
заданиях, номер базы данных, к которой относится упражнение, и уровень сложности.
Номер | База | Уровень | Упражнение |
-1 | 5 | 1 | Методом наименьших квадратов найти линейную зависимость мгновенного расхода краски от времени: V = at + b, где V - расход краски; t - время в секундах, отсчитываемое от первой окраски (t = 0). Вывод: a с 8-ю знаками после десятичной точки; b - с 2-мя знаками после десятичной точки. |
-2 | 3 | 2 | Для каждой страны определить год, когда на воду было спущено максимальное количество ее кораблей. В случае, если окажется несколько таких лет, взять минимальный из них. Вывод: страна, количество кораблей, год Замечание. Учитывать только корабли с известным годом спуска на воду. |
-3 | 5 | 2 | На планете Торус 6x4 живут торусианцы трёх цветов (красные, зелёные и синие). Первые 24 квадрата таблицы utQ, отсортированные по Q_ID - страны планеты: Т00 - первый квадрат Т03 - четвёртый квадрат Т10 - пятый квадрат T53 - двадцать четвертый квадрат Количество краски на квадрате - численность торусианцев соответствующего цвета в стране (R, G, B). В день рождения Меркадота все торусианцы в каждой стране разбиваются на группы - 8 групп каждого цвета; численность каждой группы определяется как R/8, G/8, B/8 - и направляются в 8 соседних стран (по одной группе каждого цвета на страну). Не попавшие в группы торусианцы в количестве R%8, G%8, B%8 остаются дома. Найти количество торусианцев каждого цвета в каждой стране в этот знаменательный день. Вывести на карте Меркадота для страны "Т00" количество торусианцев каждого цвета в странах Txy (x - номер строки, y - номер столбца) в формате "Txy - cccR cccG cccB", где Txy - название страны, ccc - количество с ведущими нулями. |
-4 | 5 | 2 | Найти квадраты, время между первой и последней окраской которых превышает среднее время по всем окрашенным квадратам. Вывести название квадрата и наибольшее время между двумя его последовательными окрасками в секундах. |
-5 | 3 | 1 | В таблице Battles кроме крупных битв с участием многих кораблей содержатся также записи, начинающиеся с символа #, содержащие информацию о мелких стычках. Связанные инциденты объединены в группы от 1 до 6 стычек. Формат наименования для таких записей следующий: - после # идет код группы инцидентов (не содержит цифр, может отсутствовать) - далее идет номер группы в журнале регистрации (целое число, присутствует обязательно) - далее указывается номер инцидента внутри группы. Инциденты могут нумероваться арабскими и римскими цифрами, буквами латинского алфавита с различными разделителями, например a,b,c... /1,/2,/3... .1,.2,.3... i,ii,iii... и т.п. Нумерация едина для всей группы и не содержит пропусков. Первая или единственная стычка в группе может не иметь дополнительного номера. Требуется вывести список стычек, отсортированный по коду группы, номеру группы, дополнительному номеру. Вывод: наименование стычки, номер по порядку (начиная с 1) |
-6 | 4 | 2 | Опираясь на утверждение, что одна секунда полета каждого пассажира приносит перевозчику 1 цент (0.01$) дохода, провести АВС-анализ привлекательности пассажиров вне зависимости от перевозчика. В основе метода лежит принцип Парето - 20% всех товаров дают 80% оборота. При выполнении анализа пассажиры делятся на 3 категории по степени их ценности: А, В и С. Порядок проведения анализа: 1. Рассчитываем долю дохода пассажира от общей суммы дохода, приносимой всеми пассажирами, с накопительным итогом. Доля с накопительным итогом высчитывается путём прибавления доли конкретного пассажира к сумме долей пассажиров с не меньшей долей дохода (при одинаковой доле дохода меньший накопительный итог будет у пассажира, имя которого идет раньше в алфавитном порядке). 2. Выделяем категории А,В и С. Категория А - округленная до двух десятичных знаков накопительная доля с 0,00% по 80,00% включительно, категория В - с 80,01% до 95,00%, категория С - с 95,01% до 100%. Вывод: имя пассажира, сумма прибыли в долларах, доля с накопительным итогом в процентах (точность - 2 знака после запятой), категория (А, В или С - буквы латинские) |
-7 | 1 | 1 | В таблице Product найти модели, у которых первый символ представляет собой четную цифру, а последний - нечетную. При этом первый символ должен быть меньше последнего. Вывод: номер модели, тип модели, произведение первой и последней цифр в номере модели |
-8 | 2 | 2 | Фирма открывает новые пункты по приему вторсырья. При открытии, каждому из них были выданы "подъемные" в размере 20 т.р. Каждому из пунктов была поставлена задача об увеличении первоначального капитала до 150%, с отчетностью - один раз в день. Используя одну только таблицу Outcome_o и при условии, что пункты работают с двойной накруткой, то есть на каждый выплаченный сдатчику рубль они получают доход 2 рубля, найти: - Для пунктов, справившихся с заданием, определить дату его выполнения и сумму денежных средств, полученных сверх плана на эту дату; - Для пунктов, которые не справились с заданием, определить на последнюю отчетную дату сумму денежных средств, недостающих до его выполнения. Вывод: пункт, дата выполнения (или последний день), сумма сверх плана (или недостающую сумму до плана). |
-9 | 3 | 1 | В таблице Outcomes один и тот же корабль может встречаться неоднократно (принимал участие в нескольких сражениях). Требуется найти корабли, имена которых различаются только регистром букв, например, "Duke of York" и "duke Of york". Вывод: имя корабля (любой из вариантов), число различных вариантов написания имени данного корабля в таблице. |
-10 | 4 | 1 | Отобразить карту полётов на статических картах Google. На карте вывести только уникальные направления полётов таким образом, что название первого города раньше по алфавиту, чем название второго города. Например, если есть рейс из Рима в Берлин, но нет из Берлина в Рим, то вывести направление Берлин-Рим. Или если есть оба рейса, из Милана в Мадрид и из Мадрида в Милан, то вывести только направление Мадрид-Милан. Полученные направления вывести в алфавитном порядке их городов. Для каждого города вывести метки с первой буквой его названия. В итоге должна получиться строка следующего вида (без переводов строк): <img src="http://maps.googleapis.com/maps/api/staticmap ?path=weight:3|Aaa|Bbb &path=weight:3|Aaa|Ccc &path=weight:3|Bbb|Ccc &markers=label:A|Aaa &markers=label:B|Bbb &markers=label:C|Ccc &size=512x512&sensor=false"> где <img src="http://maps.googleapis.com/maps/api/staticmap - это указание использовать статические карты Google; ?path=weight:3|Aaa|Bbb - первое направление, из пункта Aaa в Bbb, с толщиной линии 3; &path=weight:3|... - все следующие направления; &markers=label:A|Aaa - метка (A) города Aaa; &size=512x512 - указание размера карты 512x512; &sensor=false"> - обязательный параметр. |
-11 | 3 | 1 | Для каждого корабля из таблицы Ships вывести его название в base64 (wikipedia). Вывод: name, base64name. |
-12 | 4 | 1 | В аэропорту математик Иванов развлекал себя подсчетом факториала от номера рейса. Для каждого рейса в Trip определите на сколько нулей оканчивается вычисленное Ивановым число. Замечание: номер рейса содержит не более 4 цифр. Вывод: trip_no, число нулей. |
-13 | 4 | 1 | Определить количество перевезенных пассажиров за каждый календарный день (по дате вылета) первого полугодия 2003 года, начиная от даты первого рейса и заканчивая датой последнего рейса в этом полугодии. Полугодием считать интервал с (01.01.03 по 30.06.03). Вывести дату, количество пассажиров. |
-14 | 3 | 1 | Вывести названия только тех классов, у которых каждый корабль имеет такое имя, что любой его символ встречается в названии какого-либо класса. Замечание: регистр букв при сравнении не учитывается. |
-15 | 5 | 2 | На плоском песчаном пляже в координатах B_Q_ID, B_V_ID установлены круглые пляжные зонтики радиуса B_VOL. Зонтики параллельны песку, солнце в зените. Каждое значение B_DATETIME - отдельная задача. Найти площадь тени для каждого B_DATETIME. Вывод: B_DATETIME, площадь тени округлённая до целых. |
-16 | 2 | 1 | Найти такие пункты приема, которые имеют в таблице Outcome записи на каждый рабочий день в течение некоторой недели (календарные дни, исключая субботу и воскресенье). Вывод: номер пункта, дата понедельника полной рабочей недели в формате "YYYY-MM-DD", суммарное значение out за эту рабочую неделю. |
-17 | 4 | 1 | Номера рейсов, упорядоченные по возрастанию, конкатенировать в строку. Разбить полученную строку по 3 символа, начиная слева; лишние символы отбросить. Считая каждую трехсимвольную строку числом, найти сумму таких чисел, а также минимальное и максимальное значения. Вывод: минимальное значение, максимальное значение, сумма значений. |
-18 | 2 | 2 | Рассматриваются таблицы Income и Income_o, записи в них относятся к одинаковым пунктам. Учесть для каждого пункта, что в интервале между первой и последней датами прихода на него денег, пункт работал во все даты, зафиксированные в используемых таблицах для любых пунктов. Для каждого из пунктов с наибольшим средним приходом денег за рабочий день определить дату(даты) с максимальным приходом денег на этот пункт. Для этих дат вывести ВСЮ имеющуюся информацию из таблиц: point, date, inc, code (или NULL, если запись относится к Income_o). |
Начало | Упражнения SELECT (рейтинговые этапы) | Упражнения DML | Разработчики |