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

тема: Связывание таблиц · уровень: средний

Условие

В файле data.csv хранится выгрузка заявок в службу поддержки провайдера. Одна заявка может встречаться в выгрузке несколько раз: например, после повторного обращения абонента или исправления карточки.

В файле events.csv хранится журнал событий по заявкам. У одной заявки может быть несколько событий: звонки, сообщения и изменения статуса.

Требуется отфильтровать строки data.csv по указанной категории, выполнить внутреннее соединение файлов по полю ticket_id и определить число строк результата. Каждая пара строк с одинаковым ticket_id образует отдельную строку соединения. Если для идентификатора x в отфильтрованном data.csv имеется a_x строк, а в events.csv имеется b_x строк, его вклад равен a_x * b_x. Ответ равен сумме Σ a_x * b_x по всем идентификаторам.

При равенстве идентификаторов каждая подходящая строка первого файла соединяется с каждой подходящей строкой второго файла. Идентификаторы, отсутствующие после фильтрации хотя бы в одном из файлов, дают вклад 0.

Формат ввода

Рядом с программой находятся два CSV-файла в кодировке UTF-8 с разделителем-запятой.

Файл data.csv содержит от 300 до 2000 строк данных и заголовок:

ticket_id,category,district,status

ticket_id — целочисленный идентификатор заявки. Идентификатор может повторяться в нескольких строках. category — категория обращения. district — район обслуживания. status — состояние заявки; значение может быть пустым.

Файл events.csv содержит от 300 до 2000 строк данных и заголовок:

event_id,ticket_id,event_type,duration_minutes

event_id — целочисленный идентификатор события. ticket_id — идентификатор заявки из файла data.csv. event_type — тип события. duration_minutes — длительность события в минутах.

В стандартный ввод поступает одна строка с категорией category, по которой нужно отфильтровать data.csv.

Формат вывода

Выведите одно целое число — количество строк после описанного внутреннего соединения.

Ограничения

Число строк данных в data.csv: от 300 до 2000.

Число строк данных в events.csv: от 300 до 2000.

ticket_id находится в диапазоне от 1000 до 999999.

event_id находится в диапазоне от 1 до 9999999.

duration_minutes находится в диапазоне от 0 до 1440.

Длина каждого текстового поля не превышает 30 символов.

Категория во входных данных имеет длину от 3 до 30 символов и совпадает с одной из категорий файла data.csv.

Решить задачу с автопроверкой на Python →

Куда дальше