@ -21,18 +21,19 @@ class Management::SchoolDataGrowService
count = reports . count
reports = reports . joins ( " LEFT JOIN ( #{ joins_school_daily_report_sql } ) sdr ON sdr.school_id = schools.id " )
subquery = SchoolDailyActiveUser . select ( 'COUNT(distinct(user_id))' ) . joins ( :school_daily_report )
. where ( date_condition_sql ) . where ( " school_id is not null and school_id = schools.id " ) . to_sql
reports = reports . joins ( " LEFT JOIN school_daily_reports sdr ON sdr.school_id = schools.id AND #{ date_condition_sql } " )
reports = reports . select (
'schools.id school_id, schools.name school_name,' \
'sdr.teacher_increase_count,' \
'sdr.student_increase_count,' \
'sdr.course_increase_count,' \
'sdr.shixun_increase_count,' \
'sdr.shixun_homework_count,' \
'sdr.shixun_evaluate_count,' \
'sdr.uniq_active_user_count,' \
'sdr.active_user_count'
) . group ( 'schools.id' )
'SUM(teacher_increase_count) teacher_increase_count,' \
'SUM(student_increase_count) student_increase_count,' \
'SUM(course_increase_count) course_increase_count,' \
'SUM(shixun_increase_count) shixun_increase_count,' \
'SUM(shixun_homework_count) shixun_homework_count,' \
'SUM(shixun_evaluate_count) shixun_evaluate_count,' \
" ( #{ subquery } ) uniq_active_user_count, " \
'SUM(active_user_count) active_user_count' ) . group ( 'schools.id' )
reports = custom_sort ( reports , params [ :sort_by ] , params [ :sort_direction ] )
reports = reports . order ( 'school_id asc' ) . limit ( PAGE_SIZE ) . offset ( offset )
@ -69,21 +70,6 @@ class Management::SchoolDataGrowService
relations
end
def joins_school_daily_report_sql
subquery = 'select COUNT(distinct user_id) from school_daily_active_users sdau where sdau.school_daily_report_id = school_daily_reports.id'
SchoolDailyReport
. select ( 'school_id, ' \
'SUM(teacher_increase_count) teacher_increase_count,' \
'SUM(student_increase_count) student_increase_count,' \
'SUM(course_increase_count) course_increase_count,' \
'SUM(shixun_increase_count) shixun_increase_count,' \
'SUM(shixun_homework_count) shixun_homework_count,' \
'SUM(shixun_evaluate_count) shixun_evaluate_count,' \
" ( #{ subquery } ) uniq_active_user_count, " \
'SUM(distinct active_user_count) active_user_count' )
. where ( date_condition_sql ) . group ( :school_id ) . to_sql
end
def date_condition_sql
date = query_date
if date . is_a? ( Range )