Среднее время на душу населения для нескольких столбцов и ГДЕ

#sql

Вопрос:

У меня есть таблица, которая выглядит примерно так, с несколькими сотнями строк, в которых подробно описаны книги различных жанров и когда они будут завершены в будущем (все они были начаты).:

тип книги жанр Автор редактор переводчик начал писать ожидаемо_комплетион_дата
Бумажная обложка Любовные романы АГ Луис, Сара Ханна К lt; отметка времениgt; lt; отметка времениgt;
Бумажная обложка Триллер АС Сара Жоао К lt; отметка времениgt; lt; отметка времениgt;
Твердая обложка Комический ЛК Жоао К Сури М, Ханна Б lt; отметка времениgt; lt; отметка времениgt;
Бумажная обложка Любовные романы СМ Лола Ханна Би lt; отметка времениgt; lt; отметка времениgt;
Твердая обложка Преступление АГ Иан Паола, Хуан К., Ханна К. lt; отметка времениgt; lt; отметка времениgt;

Мне было поручено рассчитать жанровую продукцию на душу населения (для каждого автора, редактора, переводчика) для трех типов жанров (Роман, триллер, Комикс; игнорируя Преступление), и я в растерянности. Меня просят сделать что-то вроде этого:

жанр avg_time_to_completion_автор avg_time_to_completion_редактор avg_time_to_completion_транслятор
Любовные романы значение 1 значение 2 значение 3
Триллер значение 4 значение 5 значение 6
Комический значение 7 значение 8 значение 9

Ниже показано, с чего я начал, но я не знаю, что делать дальше.

 SELECT (SELECT genre  FROM data_table),  (SELECT (COUNT(DISTINCT(CONCAT(author, editor, translator))))  FROM data_table) /  (SELECT TIMESTAMP_DIFF(started_writing, expected_completion_date, DAY)  FROM data_table  WHERE genre IN (Romance, Thriller, Comic))  ORDER BY avg_time_to_completion_per_capita ASC  

Может кто-нибудь, пожалуйста, помочь мне понять, что мне нужно сделать? Это задание меня попросили взять на себя коллега, который несколько недель болеет, и больше никто ничего не знает. Я не хочу, чтобы мой коллега работал, пока они находятся в больнице, но у меня есть очень базовые навыки SQL, и я борюсь.

Комментарии:

1. Данные не включают дату, когда они были полностью написаны, отредактированы или переведены. Информации недостаточно для вычисления ожидаемого результата.

2. Спасибо! Можете ли вы вычислить результат, если вы ожидаете, что каждый из них выполнил одинаковый объем работы (т. Е. Эффективно разделил СУММУ(автор, редактор, переводчик), игнорируя, сколько времени заняла каждая часть?

Ответ №1:

Простая агрегация вычислит желаемый результат. Например:

 select  genre,  avg(expected_completion_date - started_writing) / 3 as avg_time_to_completion_author from data_table where genre in ('Comic', 'Romance', 'Thriller') group by genre  

Примечание. Арифметика даты/времени зависит от конкретного компонента базы данных. Запрос должен выполняться в PostgreSQL, но вы должны изменить его, если используете другую базу данных.