WITH l_nyc_data_v AS (With nyc_schools as ( SELECT child_organization_id AS school_id FROM report.organization_hierarchy INNER JOIN dw.dimorganization ON child_organization_id = organizationid WHERE parent_organization_id = '8a97b09d3d96517f013fad817713497a' AND child_organization_type = 'SCHOOL' ), login_data as ( SELECT trunc(eventoccurrencedatetime) as event_date, sessionid, actorid as user_id, dimuserenrollment.role_type FROM dw.learningevent eve INNER JOIN report.dim_organization_user_enrollment AS dimuserenrollment ON eve.actorid = dimuserenrollment.user_id AND dimuserenrollment.role_type in ('TEACHER','STUDENT') INNER JOIN nyc_schools sch on dimuserenrollment.school_id = sch.school_id WHERE ((( eve.eventoccurrencedatetime ) >= (TIMESTAMP '2020-04-18') AND ( eve.eventoccurrencedatetime ) < (TIMESTAMP '2020-04-19'))) AND eventtype in ('login') AND eve.objecttype in ('application-session') AND eve.intpartnerid = (select integrationpartnername from etl.integrationpartner where integrationpartnerid=3) ) , all_logins as ( SELECT login_data.event_date, CASE WHEN login_data.role_type::text = 'TEACHER'::character varying::text THEN count(login_data.sessionid) ELSE NULL::bigint END AS all_teacher_logins, CASE WHEN login_data.role_type::text = 'STUDENT'::character varying::text THEN count(login_data.sessionid) ELSE NULL::bigint END AS all_student_logins FROM login_data GROUP BY event_date, login_data.role_type ) , distinct_logins as ( SELECT login_data.event_date, CASE WHEN login_data.role_type::text = 'TEACHER'::character varying::text THEN count(distinct login_data.sessionid) ELSE NULL::bigint END AS u_teacher_logins, CASE WHEN login_data.role_type::text = 'STUDENT'::character varying::text THEN count(distinct login_data.sessionid) ELSE NULL::bigint END AS u_student_logins FROM login_data GROUP BY event_date, login_data.role_type )select al.event_date, al.all_teacher_logins, al.all_student_logins, d.u_teacher_logins, d.u_student_logins from all_logins al INNER JOIN distinct_logins d on al.event_date = d.event_date ) SELECT DATE(l_nyc_data_v.event_date ) AS "l_nyc_data_v.event_date", COALESCE(SUM(l_nyc_data_v.u_teacher_logins ), 0) AS "l_nyc_data_v.u_teacher_logins", COALESCE(SUM(l_nyc_data_v.all_teacher_logins ), 0) AS "l_nyc_data_v.all_teacher_logins", COALESCE(SUM(l_nyc_data_v.u_student_logins ), 0) AS "l_nyc_data_v.u_student_logins", COALESCE(SUM(l_nyc_data_v.all_student_logins ), 0) AS "l_nyc_data_v.all_student_logins" FROM l_nyc_data_v GROUP BY 1 ORDER BY 1 DESC LIMIT 500