Skip to content
← All datasets

Certified Personnel Compensation (Salaries and Positions)

Average salaries, contract days, and FTE position counts for Georgia school staff by school, district, and state, 2011-2024.

Year coverage
20112024
Updated
annual
Version
1.0.0
Schema hash
e00ffea94b1d

Detail levels available

StateDistrictSchool · default

Overview

Georgia Office of Student Achievement (GOSA) certified-personnel compensation dataset, compiled from local school systems' Certified/Classified Personnel Information (CPI) submissions. For every Georgia public school, school district, and the state as a whole, publishes four position measures per employee group (Administrators, PK-12 Teachers, Support Personnel): the full-time-equivalent (FTE) count of certified positions and the average annual salary, average daily salary, and average contract days of those positions. Coverage runs from the 2010-11 school year through 2023-24. This is one of three topics split from the retired certified_personnel dataset, all reading the same GOSA source: staff headcounts by certificate level, certification status, gender, employment status, and race/ethnicity live in certified_personnel_composition, and years-of-experience band headcounts live in certified_personnel_experience.

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

Key metric

avg_annual_salaryAverage Annual Salary (currency)

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 calendar year of the school year. Year 2024 = 2023-2024 school year. Derived from the bronze `LONG_SCHOOL_YEAR` column's ending year.
Full description
Ending calendar year of the school year. Year 2024 = 2023-2024 school year. Derived from the bronze `LONG_SCHOOL_YEAR` column's ending year.
district_codeDistrict CodestringyesGOSA district code (FK to the education districts dimension): 3-digit zero-padded for standard districts, 7-digit for state/commission charter schools (present from 2012 onward). NULL for state-level aggregate rows (the bronze sentinel `ALL`).
Full description
GOSA district code (FK to the education districts dimension): 3-digit zero-padded for standard districts, 7-digit for state/commission charter schools (present from 2012 onward). NULL for state-level aggregate rows (the bronze sentinel `ALL`).

Joins districts; adds its label columns.

school_codeSchool Codestringyes4-digit zero-padded GOSA school code (FK to the education schools dimension, composite key with district_code). NULL for district-level and state-level aggregate rows (the bronze sentinel `ALL`).
Full description
4-digit zero-padded GOSA school code (FK to the education schools dimension, composite key with district_code). NULL for district-level and state-level aggregate rows (the bronze sentinel `ALL`).

Joins schools; adds its label columns.

employee_typeEmployee TypestringnoWhich staff group the row covers: administrators, PK-12 teachers, or support personnel.
Full description
Certified employee group this row's position and compensation figures cover. Snake_case recode of bronze EMPLOYEE_TYPE: `administrators`, `pk_12_teachers`, `support_personnel`.
3 allowed values
  • administrators
  • pk_12_teachers
  • support_personnel
fte_positionsFTE PositionsnumbercountnoFull-time-equivalent count of certified positions in this staff group — fractional because part-time positions count as fractions.
Full description
Full-time-equivalent (FTE) count of certified positions for this employee group (bronze Positions/Number). An FTE-style count, so legitimately fractional — part-time positions contribute fractions of a position. This is the N behind the three salary/contract-day averages (their denominator). Do not sum school rows to rebuild district or state totals — use the published aggregate rows.
avg_annual_salaryAverage Annual SalarynumbercurrencynoAverage annual salary (US dollars) of this staff group's certified positions.
Full description
Average annual salary in US dollars across this entity's certified positions in the employee group (bronze Positions/Average Annual Salary). An entity-level mean: never sum across entities, and a state average is not the sum (or mean) of district averages. Reconciles with avg_daily_salary x avg_contract_days to within $5 (enforced by a quality check). A value of 0.0 is a real published figure, occurring at small cells where an entity reports positions without salary data (observed max: 250,831.94).
avg_daily_salaryAverage Daily SalarynumbercurrencynoAverage daily salary (US dollars) of this staff group's certified positions.
Full description
Average daily salary in US dollars across this entity's certified positions in the employee group (bronze Positions/Average Daily Salary). An entity-level mean: never sum across entities. Multiplied by avg_contract_days it reproduces avg_annual_salary to within $5 (observed max: 2,764.56).
avg_contract_daysAverage Contract DaysnumbernoAverage number of contract days per year for this staff group's certified positions.
Full description
Average number of contract days per year across this entity's certified positions in the employee group (bronze Positions/Average Contract Days). An entity-level mean: never sum across entities. Declares no `unit` (days are neither a rescaled percentage nor a currency); the [0, 366] range is enforced by an authored quality check instead (observed bronze range: [30, 260]).

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
detaildetaildistrictsschoolsstatesenum-enforced, default: schools
district_codeforeign_keyany valuemulti-value
school_codeforeign_keyany valuemulti-value
employee_typecategoricaladministratorspk_12_teacherssupport_personnelmulti-value, enum-enforced, pick one
district_typedimension_attribute
7 allowed values
  • commission_charter
  • resa
  • standard
  • state_agency
  • state_charter
  • state_school
  • state_special
multi-value, enum-enforced
school_leveldimension_attributeelementarymiddlehighk12othermulti-value, enum-enforced
localedimension_attributecitysuburbtownruralmulti-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/certified_personnel_compensation"

schools data for 2024

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

Filtered to employee_type = administrators for 2024

curl "https://georgiacivicdata.org/api/v1/education/certified_personnel_compensation?year=2024&employee_type=administrators"

One district (code 644), 2024

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

Download 2024 as CSV

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

Notes & limitations

NULL handling

  • Zero is a real, reported value.

Limitations

This source has no suppression markers in any year (2010-11 through 2023-24): every value is published, zeros are real, and all four metric columns are non-null on every row. avg_annual_salary, avg_daily_salary, and avg_contract_days are entity-level means — never sum them across entities, and a state average is not the sum (or mean) of district averages; use the published district/state rows for aggregate analysis. avg_annual_salary can be a real 0.0 at small cells where an entity reports positions without salary data. fte_positions is an FTE-style fractional position count (part-time positions count as fractions), and it is the N behind the three averages; do not sum school rows to rebuild district or state position totals. State rows have NULL district_code and school_code; district rows have NULL school_code.