Module sd.queries

A module containing only SQL query strings.

Source code
# -*- coding: utf-8 -*-
"""
A module containing only SQL query strings.
"""

ALL_SEMESTER_DATA = """
SELECT s.student_id_fk
        , CASE WHEN s.gender = 'F' THEN 1 ELSE 0 END AS female
        ,CASE WHEN s.ethnicity IN ('Asian', 'Asian / Pacific Islander', 'Caucasian (non Hispanic)') THEN 1 ELSE 0 END as white_asian
        , s.first_course_datetime
        , YEAR(s.first_course_datetime) - 1992 AS first_course_year
        , CASE WHEN s.hsgpa > 4.0 THEN 4.0 ELSE s.hsgpa END AS hs_gpa
        , s.math_placement_score
        , m.changed_major
        , m.n_majors
        , m.semester_idx
        , c.avg_grade
        , c.cumulative_avg_grade
        , c.fraction_above_or_below_fulltime_credithours
        , c.total_semester_credit_hours
        , c.cumulative_credit_hours
        , first_degree.semester_idx AS graduated_semester_idx
        , CASE WHEN first_degree.student_id_fk IS NOT NULL THEN first_degree.semester_idx ELSE ls.last_semester END AS last_semester_enrolled
        , CASE WHEN m.semester_idx + 1 = first_degree.semester_idx THEN 1 ELSE 0 END as graduates_next_semester
        , CASE WHEN first_degree.student_id_fk IS NULL THEN 0 ELSE 1 END AS graduated
FROM un_students_1992_2013 AS s
JOIN un_majors_aggregates AS m
ON s.student_id_fk = m.student_id_fk
JOIN cumulative_course_agg_per_semester AS c
ON s.student_id_fk = c.student_id_fk
AND m.Term_Seq_Id = c.Term_Seq_Id
LEFT JOIN (
SELECT *
FROM (
        SELECT d.student_id_fk
        , d.term_seq_id
        , m.semester_idx
        , ROW_NUMBER() OVER (PARTITION BY d.student_id_fk ORDER BY d.term_seq_id) AS degree_idx
          FROM [msu_v1].[dbo].[un_degrees] as d
          JOIN un_majors_aggregates as m
          ON d.student_id_fk = m.student_id_fk
          AND d.term_seq_id = m.Term_Seq_Id
          WHERE primary_major = 'Y'
         ) AS first_degree
        WHERE degree_idx = 1
) AS first_degree
ON s.student_id_fk = first_degree.student_id_fk
LEFT JOIN (
        SELECT [student_id_fk]
      ,MAX([semester_idx]) AS last_semester
  FROM [msu_v1].[dbo].[un_majors_aggregates]
  GROUP BY student_id_fk
  ) as ls
  ON s.student_id_fk = ls.student_id_fk
  WHERE ls.last_semester <= 20
"""