Информатика: ОГЭ и ЕГЭ

Разборы · ЕГЭ, задание 3

Задание 3 ЕГЭ по информатике: реляционная база данных

Что проверяет задание

К заданию приложен файл электронной таблицы с фрагментом базы данных из нескольких связанных таблиц. Нужно по связям собрать нужные записи и посчитать итог: количество, сумму, массу, выручку. Оценивается в 1 балл, в поле ответа — только число.

Что нужно знать

Как решать

  1. Найдите главную таблицу — обычно это таблица операций.
  2. Подтяните в неё через ВПР все нужные поля из справочников: адрес магазина, название товара, вес упаковки.
  3. Поставьте фильтры: тип операции, диапазон дат, адрес, товар.
  4. Добавьте столбец с вычислением (например, упаковки × граммы) и просуммируйте отфильтрованное.
  5. Переведите в единицы, о которых спрашивают.

Пример из демоверсии 2027

База «Кондитерские изделия» состоит из таблиц «Движение товаров» (ID операции, дата, ID магазина, артикул, количество упаковок, тип операции — «Поступление» или «Продажа»), «Товар» (артикул, отдел, наименование, единица измерения, количество в упаковке, цена) и «Магазин» (ID магазина, район, адрес).

Схема базы данных: таблицы «Движение товаров», «Магазин», «Товар» и связи между ними

Определите общую массу (в кг) всех видов зефира, полученного магазинами на Прибрежной улице с 5 по 19 июня включительно.

Решение. На Прибрежной улице два магазина. Зефир бывает нескольких видов, у всех масса упаковки указана в граммах. Отбираем операции «Поступление» зефира в эти магазины с 05.06 по 19.06, для каждой считаем «упаковки × граммы в упаковке», складываем и делим на 1000. Ответ: 1630.

То же на Python (для файла .ods нужен пакет odfpy, для .xlsx — openpyxl):

import pandas as pd

book = pd.read_excel("3.ods", sheet_name=None)       # все листы файла
df = (book["Движение_товаров"]
      .merge(book["Товар"], on="Артикул")
      .merge(book["Магазин"], on="ID магазина"))
sel = df[(df["Тип операции"] == "Поступление")
         & df["Наименование товара"].str.startswith("Зефир")
         & df["Адрес"].str.contains("Прибрежная")
         & df["Дата"].between("2025-06-05", "2025-06-19")]
grams = (sel["Количество упаковок, шт."] * sel["Количество в упаковке"]).sum()
print(grams / 1000)                                  # 1630.0

Типичные ошибки

Потренироваться: задание 3 новые варианты с проверкой ответа

Подготовиться с репетитором

На занятиях разбираем каждое задание в формате экзамена и отрабатываем его на тренажёрах с проверкой по критериям.

Записаться на пробное занятие

Другие разборы