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).
- 2012–2024
- annual
- 1.0.0
- 1881f49ef6ad
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.
mobility_rate — Mobility 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.
| Column | Type | Unit | Range | Null? | Description |
|---|---|---|---|---|---|
year | integer | — | — | no | 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.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_code | string | — | — | yes | 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.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. |
school_code | string | — | — | yes | 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').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'). |
mobility_rate | number | — | yes | Student 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.
| Parameter | Kind | Allowed values | Notes |
|---|---|---|---|
year | year_exact | any value | — |
year_min | year_range | any value | — |
year_max | year_range | any value | — |
detail | detail | districtsschools | enum-enforced, default: schools |
district_code | foreign_key | any value | multi-value |
school_code | foreign_key | any value | multi-value |
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/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.