Skip to content
← All datasets

Student Mobility Rates

How often students change schools in each Georgia public school and district, as an annual churn rate, 2012-2024 (no 2014 district rows).

Source
GOSA
Year coverage
20122024
Updated
annual
Version
1.0.0
Schema hash
1881f49ef6ad

Detail levels available

DistrictSchool · default

Overview

Annual student mobility (churn) rate for Georgia public schools and districts, published by GOSA for school years 2011-12 through 2023-24 (filename year = ending calendar year, e.g. 2024 = 2023-24). Mobility is the share of students enrolled at any point during the school year but not for the full year; GOSA computes it as a churn rate — student entries plus withdrawals between the fall count date and May 1, over the fall-count enrollment — so it counts moves rather than movers and can legitimately exceed 100%. One fact table at two detail levels: school (one row per school) and district (one row per district / system). No demographic breakdowns. Merges the formerly separate student_mobility_rates_school and student_mobility_rates_district topics.

Row grain: One row per year, district_code, school_code.

Key metric

mobility_rateMobility Rate (ratio)

The single headline value most answers want.

Variables

Every column in the fact table. The code is the exact field name the API returns.

ColumnTypeUnitRangeNull?Description
yearYearintegernoEnding (spring) calendar year of the school year (e.g. 2024 for 2023-24), taken from the bronze filename — no in-file year column exists in either family.
Full description
Ending (spring) calendar year of the school year (e.g. 2024 for 2023-24), taken from the bronze filename — no in-file year column exists in either family.
district_codeDistrict CodestringyesGOSA district code (FK to districts dimension), zero-padded to 3 digits for standard county/city districts (codes 601-793) and the 799 state-schools authorizer; 7-digit state/commission-charter authorizer codes (782xxxx/783xxxx, school rows only) are preserved unchanged. On district-detail rows it is the bronze school_district_cd; on school-detail rows it is the first 3 (or 7) characters of the compound sys_sch code. Never NULL.
Full description
GOSA district code (FK to districts dimension), zero-padded to 3 digits for standard county/city districts (codes 601-793) and the 799 state-schools authorizer; 7-digit state/commission-charter authorizer codes (782xxxx/783xxxx, school rows only) are preserved unchanged. On district-detail rows it is the bronze school_district_cd; on school-detail rows it is the first 3 (or 7) characters of the compound sys_sch code. Never NULL.

Joins districts; adds its label columns.

school_codeSchool CodestringyesGOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). Populated on school rows only — district rows carry NULL. Extracted from the compound bronze sys_sch code: chars after the 3-char district prefix for regular districts ('601103' -> '0103'), chars 4-7 for 799 state-school codes (both the 11-char 2012-2019 form '79918931893' and the 7-char 2020-2024 form '7991893' -> '1893'), or the last 3 chars for 10-char charter codes ('7820108108' -> '0108').
Full description
GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). Populated on school rows only — district rows carry NULL. Extracted from the compound bronze sys_sch code: chars after the 3-char district prefix for regular districts ('601103' -> '0103'), chars 4-7 for 799 state-school codes (both the 11-char 2012-2019 form '79918931893' and the 7-char 2020-2024 form '7991893' -> '1893'), or the last 3 chars for 10-char charter codes ('7820108108' -> '0108').

Joins schools; adds its label columns.

mobility_rateMobility RatenumberratioyesStudent churn rate (0-1 scale): student moves per fall enrollment; counts moves, so it can exceed 1.0.
Full description
Student mobility (churn) rate on the 0-1 scale (0.214 = 21.4%): student entries plus withdrawals between the fall count date and May 1, divided by fall-count enrollment. Bronze publishes 0-100; divided by 100 per data-cleaning-standards §4. A ratio, not a bounded proportion: the metric counts student moves rather than distinct students, so values above 1.0 are legitimate and preserved — at the school level 33-59 rows per year exceed 1.0 at alternative schools, DJJ facilities, and residential treatment centers (e.g. 5.333 = 533.3% at Lighthouse Care Center of Augusta, 2024). District-level values stay below 1.0 in all published years (max 0.59 in 2016). One school value is a suspected source defect preserved per §4b (extreme-but-conceivable): 2020 district_code=701 / school_code=0298 (Eagle's Landing Academy) publishes 115.0 (raw 11500), ~17x that year's next extreme (657.9); it is retained, not capped, and flagged by the transform's sanity warning. Bronze column name: mobility_rate (2012-2020), renamed to mobility (2021-2024) in both families, semantically identical.

Filters

Query parameters the fact endpoint accepts. Comma-separated values are OR within a parameter; multiple parameters AND together.

ParameterKindAllowed valuesNotes
yearyear_exactany value
year_minyear_rangeany value
year_maxyear_rangeany value
detaildetaildistrictsschoolsenum-enforced, default: schools
district_codeforeign_keyany valuemulti-value
school_codeforeign_keyany valuemulti-value
district_typedimension_attribute
7 allowed values
  • commission_charter
  • resa
  • standard
  • state_agency
  • state_charter
  • state_school
  • state_special
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/student_mobility_rate"

schools data for 2024

curl "https://georgiacivicdata.org/api/v1/education/student_mobility_rate?year=2024"

One district (code 601), 2024

curl "https://georgiacivicdata.org/api/v1/education/student_mobility_rate?district_code=601&year=2024&detail=districts"

Download 2024 as CSV

curl "https://georgiacivicdata.org/api/v1/education/student_mobility_rate?year=2024&format=csv"

Notes & limitations

NULL handling

  • Zero is a real, reported value.

Limitations

Two detail levels (school, district) in one fact table, split by parquet filename; school_code is NULL on district rows. No statewide rollup is published in either family, so state figures cannot be read from this table. The district level has a documented 2014 gap: GOSA published the 2014 district file at the school level only (a file byte-identical to the school family's 2014 file), with no enrollment counts from which to reconstruct the district rate, so the district 2014 rows are omitted; 2014 school-level rows are present (from the school family). The school-level and district-level rows come from two independent GOSA downloads — the district rate rolls up entry/withdrawal counts rather than averaging the school rates — so school rows are NOT guaranteed to reconcile with their district row. Mobility is a churn ratio, not a bounded proportion: it counts moves rather than movers, so school-level values above 1.0 are legitimate and preserved (one suspected 2020 source defect, Eagle's Landing Academy at 115.0, is retained per §4b). No suppression exists in this topic — the only NULLs are four genuinely blank school cells (2019, 2020, 2021, 2024); NULL never means suppressed.