mirror of
https://github.com/edcommonwealth/sqm-dashboards.git
synced 2026-03-07 21:48:16 -08:00
perf: memoize function when calculating response rates
This commit is contained in:
parent
452876ef09
commit
d306319de1
1 changed files with 12 additions and 9 deletions
|
|
@ -28,15 +28,18 @@ class StudentResponseRateCalculator < ResponseRateCalculator
|
||||||
end
|
end
|
||||||
|
|
||||||
def survey_items_with_sufficient_responses(grade:)
|
def survey_items_with_sufficient_responses(grade:)
|
||||||
threshold = 10
|
@survey_items_with_sufficient_responses ||= Hash.new do |memo, grade|
|
||||||
quarter_of_grade = enrollment_by_grade[grade] / 4
|
threshold = 10
|
||||||
threshold = threshold > quarter_of_grade ? quarter_of_grade : threshold
|
quarter_of_grade = enrollment_by_grade[grade] / 4
|
||||||
SurveyItem.joins('inner join survey_item_responses on survey_item_responses.survey_item_id = survey_items.id')
|
threshold = threshold > quarter_of_grade ? quarter_of_grade : threshold
|
||||||
.student_survey_items
|
memo[grade] = SurveyItem.joins('inner join survey_item_responses on survey_item_responses.survey_item_id = survey_items.id')
|
||||||
.where("survey_item_responses.school": school, "survey_item_responses.academic_year": academic_year, "survey_item_responses.grade": grade, "survey_item_responses.survey_item_id": subcategory.survey_items.student_survey_items)
|
.student_survey_items
|
||||||
.group('survey_items.id')
|
.where("survey_item_responses.school": school, "survey_item_responses.academic_year": academic_year, "survey_item_responses.grade": grade, "survey_item_responses.survey_item_id": subcategory.survey_items.student_survey_items)
|
||||||
.having("count(*) >= #{threshold}")
|
.group('survey_items.id')
|
||||||
.count
|
.having("count(*) >= #{threshold}")
|
||||||
|
.count
|
||||||
|
end
|
||||||
|
@survey_items_with_sufficient_responses[grade]
|
||||||
end
|
end
|
||||||
|
|
||||||
def survey_item_count(grade:)
|
def survey_item_count(grade:)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue