Student Growth Model (SGM) End-of-Grade Results
Student growth percentiles on Georgia Milestones grades 4-8 tests by school, district, grade, and subject, 2015-2023.
- 2015–2023
- annual
- 1.0.0
- b96869f8e00f
Overview
Georgia Student Growth Model (GSGM / SGP) on End-of-Grade (EOG) Milestones assessments. Each row is a (year x detail_level x geography x subject x grade) cohort's growth-related measures: Median Student Growth Percentile (1-99 ordinal), share of students at or above Typical growth (SGP >= 35), and (in 2023 only) a three-bucket SGP split (Low < 35, Typical 35-65, High > 65). 2015-2019 also report achievement-level percentages (Proficient / Developing Learner and above) on the underlying EOG assessment. Data covers reporting years 2015, 2016, 2017, 2018, 2019, and 2023. No GSGM was reported during COVID years 2020-2022. 2015-2016 report four subjects (ELA, Math, Science, Social Studies); 2017-2019 report only ELA + Math; 2023 reports only ELA + Math.
Row grain: One row per year, district_code, school_code, grade_level, subject.
sgp_median — SGP Median (percentile, 1–99)
The single headline value most answers want.
Variables
Every column in the fact table. The code is the exact field name the API returns.
| Column | Type | Unit | Range | Null? | Description |
|---|---|---|---|---|---|
year | integer | — | — | no | Ending calendar year of the school year (spring year). E.g., 2017 = school year 2016-2017. Data published years are 2015, 2016, 2017, 2018, 2019, 2023.Full description▾Ending calendar year of the school year (spring year). E.g., 2017 = school year 2016-2017. Data published years are 2015, 2016, 2017, 2018, 2019, 2023. |
district_code | string | — | — | yes | 3-digit GOSA district/system code (FK to districts dimension). 7-digit charter / state-school codes are preserved in full; 2015-2017 school-level rows published under the bare charter SYSTEM codes 782/783 are promoted to the 7-digit campus code (system + school code) used by 2018+ files. NULL for state-level rows.Full description▾3-digit GOSA district/system code (FK to districts dimension). 7-digit charter / state-school codes are preserved in full; 2015-2017 school-level rows published under the bare charter SYSTEM codes 782/783 are promoted to the 7-digit campus code (system + school code) used by 2018+ files. NULL for state-level rows. |
school_code | string | — | — | yes | 4-digit GOSA school code (FK to schools dimension, composite with district_code). NULL for district- and state-level rows.Full description▾4-digit GOSA school code (FK to schools dimension, composite with district_code). NULL for district- and state-level rows. |
grade_level | string | — | — | no | Grade tested, 04 through 08 (grade 3 has no prior score for growth); 'all' is the across-grades aggregate.Full description▾Grade level as a zero-padded 2-char string categorical, matching the rest of the per-grade education topics. Per-grade rows carry `"04"`-`"08"` (EOG SGP is only reported for grades 4-8 because an SGP requires a prior-year score, and grade 3 is the first tested grade). The published AllGrades aggregate (2015-2019 only) is preserved as `"all"` because its `sgp_median` cannot be reconstructed from the per-grade medians — analogous to the `"all"` value used in the `demographic` column for cross-demographic aggregates. 2023 has no AllGrades row in bronze. 6 allowed values▾
|
subject | string | — | — | no | The content area tested (english_language_arts, mathematics, science, social_studies).Full description▾Snake-case subject label. 2015-2016 report four subjects (english_language_arts, mathematics, science, social_studies); 2017+ reports only english_language_arts and mathematics. 4 allowed values▾
|
num_tested | integer | — | yes | Number of students who took the EOG assessment. NULL in 2023 (Era 6 does not report this column — see bronze-data-structure.md §Era 6).Full description▾Number of students who took the EOG assessment. NULL in 2023 (Era 6 does not report this column — see bronze-data-structure.md §Era 6). | |
num_sgp_received | integer | — | yes | Number of students with enough prior-year scores to receive a Student Growth Percentile (subset of num_tested in 2015-2019; the only count metric reported in 2023).Full description▾Number of students with enough prior-year scores to receive a Student Growth Percentile (subset of num_tested in 2015-2019; the only count metric reported in 2023). | |
sgp_received_rate | number | — | yes | Share of tested students who received an SGP (num_sgp_received / num_tested). 0-1 decimal scale. NULL in 2023 (not reported).Full description▾Share of tested students who received an SGP (num_sgp_received / num_tested). 0-1 decimal scale. NULL in 2023 (not reported). | |
sgp_median | number | 1–99 | yes | Median student growth percentile (1-99); 50 is average growth, higher means faster growth than similar peers.Full description▾Median Student Growth Percentile on the 1-99 ordinal scale (the true SGP domain — there is no 0 or 100 SGP, so the range guard is tightened from the percentile default [0, 100] to [1, 99]). NOT converted to 0-1 — it's a percentile rank, preserved verbatim per data-cleaning-standards §4. Statewide median is 50 by construction. Values can be `.5` halves (e.g., 44.5). NULL on empty-cohort rows (num_sgp_received == 0): a median is undefined with no students, and bronze's sentinel 0 there is outside the valid 1-99 scale, so it is nulled rather than carried (which is why the tightened [1, 99] guard holds). The mask is recorded in the transform manifest (masked_values). | |
pct_proficient_learner_or_above | number | — | yes | Share of students at the Proficient Learner achievement level or higher on the EOG assessment (0-1 scale; bronze / 100). NULL in 2023 (metric dropped).Full description▾Share of students at the Proficient Learner achievement level or higher on the EOG assessment (0-1 scale; bronze / 100). NULL in 2023 (metric dropped). | |
pct_developing_learner_or_above | number | — | yes | Share of students at the Developing Learner achievement level or higher on the EOG assessment (0-1 scale; bronze / 100). NULL in 2023 (metric dropped).Full description▾Share of students at the Developing Learner achievement level or higher on the EOG assessment (0-1 scale; bronze / 100). NULL in 2023 (metric dropped). | |
pct_sgp_typical_or_high_growth | number | — | yes | Share of SGP-scored students with SGP >= 35 (Typical or High growth). 0-1 scale. NULL in 2023 — Era 6 replaced this with the three-bucket SGP split below.Full description▾Share of SGP-scored students with SGP >= 35 (Typical or High growth). 0-1 scale. NULL in 2023 — Era 6 replaced this with the three-bucket SGP split below. | |
pct_sgp_low_growth | number | — | yes | Share of SGP-scored students in the Low Growth band (SGP < 35). 0-1 scale. Era 6 (2023) only; NULL for 2015-2019.Full description▾Share of SGP-scored students in the Low Growth band (SGP < 35). 0-1 scale. Era 6 (2023) only; NULL for 2015-2019. | |
pct_sgp_typical_growth | number | — | yes | Share of SGP-scored students in the Typical Growth band (35 <= SGP <= 65). 0-1 scale. Era 6 only; NULL for 2015-2019. NOT the same as pct_sgp_typical_or_high_growth — Era 1-5's `% Typical or High` lumps typical and high together (SGP >= 35).Full description▾Share of SGP-scored students in the Typical Growth band (35 <= SGP <= 65). 0-1 scale. Era 6 only; NULL for 2015-2019. NOT the same as pct_sgp_typical_or_high_growth — Era 1-5's `% Typical or High` lumps typical and high together (SGP >= 35). | |
pct_sgp_high_growth | number | — | yes | Share of SGP-scored students in the High Growth band (SGP > 65). 0-1 scale. Era 6 only; NULL for 2015-2019.Full description▾Share of SGP-scored students in the High Growth band (SGP > 65). 0-1 scale. Era 6 only; NULL for 2015-2019. |
Filters
Query parameters the fact endpoint accepts. Comma-separated values are OR within a parameter; multiple parameters AND together.
| Parameter | Kind | Allowed values | Notes |
|---|---|---|---|
year | year_exact | any value | — |
year_min | year_range | any value | — |
year_max | year_range | any value | — |
detail | detail | districtsschoolsstates | enum-enforced, default: schools |
district_code | foreign_key | any value | multi-value |
school_code | foreign_key | any value | multi-value |
grade_level | categorical | all0405060708 | multi-value, enum-enforced |
subject | categorical | english_language_artsmathematicssciencesocial_studies | multi-value, enum-enforced, pick one |
district_type | dimension_attribute | 7 allowed values▾
| multi-value, enum-enforced |
Example requests
Run these against the base URL — they return live data.
All rows (first page), schools level
curl "https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_grade"schools data for 2023
curl "https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_grade?year=2023"Filtered to grade_level = 04 for 2023
curl "https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_grade?year=2023&grade_level=04"One district (code 601), 2023
curl "https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_grade?district_code=601&year=2023&detail=districts"Download 2023 as CSV
curl "https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_grade?year=2023&format=csv"Notes & limitations
NULL handling
- Suppressed cells (too few students to report) are NULL, never zero.
- Zero is a real, reported value.
Limitations
Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code.