Мне нужно написать несколько довольно сложных отчетов. Некоторые из них ... Я не уверен, как написать SQL-запрос только для одного из значений, не говоря уже о том, чтобы объединить их в один запрос.
Является ли обычным делом просто взять дерьмовую загрузку данных и вычислить все это с помощью кода? Или я должен попытаться найти способ заставить все отчеты полагаться на sql?
У меня очень богатая модель предметной области. Фактически, части кода могут быть расширены для вычисления именно того, что они хотят. Фактическая логика не так сложна для написания - и лучше работать с моей моделью предметной области, чем с SQL. С SQL написание бизнес-логики, ее рефакторинг, тестирование и контроль версий - это настоящая боль, потому что она отделена от вашего реального кода.
Например, одна статистика, которую они хотят получить, это процент того, насколько они улучшились, особенно по отношению к другим людям в том же классе, в той же школе и по сравнению с другими школами. Это требует некоторого довольно подробного анализа того, как они работали в прошлом, с их последней информацией, а также вычисления для групп, с которыми вы сравниваете в целом. Я даже не представляю, как будет выглядеть SQL-запрос.
Дело в том, что это улучшение в% не является столбцом в базе данных - оно требует больших вычислений само по себе, анализируя все живые данные в режиме реального времени. Невозможно кэшировать эти данные в столбце, так как выполнение этих вычислений для каждой строки, которая необходима каждый раз, когда учащийся что-то делает, СУМАСШЕДО.
Я немного боюсь вытащить сотни и сотни записей, чтобы получить эти цифры. Возможно, мне придется вытащить это количество, чтобы вычислить 1 значение для 1 пользователя ... и если они хотят получить отчет для всех пользователей на одном экране, то в основном потребуется анализ всей базы данных. И это всего лишь 1 столбец значений многих столбцов, которые они хотят получить в отчете!
По сути, требуемый ими отчет является огромным скачком производительности независимо от того, какой метод я выбрал для его написания.
В любом случае, я хотел бы спросить вас, какие решения вы использовали для решения подобных проблем.