Data / Wage benchmarks (BLS OEWS) / Dictionary

WageBench Workforce Benchmarks

Description

BLS Occupational Employment and Wage Statistics (OEWS) wage data, filtered to healthcare occupations only (SOC codes starting 29- — healthcare practitioners/technical, e.g. physicians, nurses, therapists — or 31- — healthcare support, e.g. nursing assistants, home health aides, medical assistants). One row per (occupation × area × year), at four area granularities: national, state, MSA (metro), and non-metropolitan area. The underlying table covers every SOC code (not just healthcare); this export applies the 29-%/31-% prefix filter directly on occupation_code.

  • Source: US Bureau of Labor Statistics OEWS (bls.gov/oes), published annually each May for the prior reference period.
  • Refresh cadence: annual.
  • Row count: 54,650 (filtered from 473,502 total rows in the source table across all occupations).
  • Vintage: 2025 (max survey year observed at export time).
  • Coverage: 127 distinct healthcare SOC codes; area-type breakdown in this export — MSA: 35,246 rows, state: 8,109, non-metro: 11,041, national: 254. Years present: 2024 and 2025 (BLS updates area-level detail on a rolling basis, so not every area/occupation has both years).

Table: wage_benchmarks

Snowflake: HEALTHPARSE_DATA.WAGE_BENCHMARKS.WAGE_BENCHMARKS

Column Type Description Notes
occupation_code VARCHAR SOC (Standard Occupational Classification) code, e.g. 29-1141 for Registered Nurses.
occupation_title VARCHAR BLS occupation title.
area_type VARCHAR Geographic granularity of this row: national, state, msa (metropolitan statistical area), or nonmetro (non-metropolitan area). Always filter on this before comparing rows — a national row and an msa row for the same occupation/year are different statistical populations, not directly comparable without noting the grain.
area_code VARCHAR FIPS code for state rows, MSA code for metro rows, or 99 for national.
area_title VARCHAR Human-readable area name, e.g. "Phoenix-Mesa-Chandler, AZ" or "U.S."
state VARCHAR Two-letter state code for state/MSA rows; US for national rows.
year SMALLINT BLS survey/reference year. 2024 and 2025 present in this export — not every occupation/area has both years.
total_employment INTEGER Estimated total employment for this occupation in this area.
employment_per_1k DOUBLE Employment per 1,000 jobs in the area (a concentration measure). Frequently null for national rows in this export — a per-thousand figure is less meaningful at the national grain; check before assuming it's populated for every row.
location_quotient DOUBLE Ratio of this occupation's local concentration to its national concentration (1.0 = same as national average). Same nullability pattern as employment_per_1k — commonly absent at national grain.
hourly_mean / hourly_p10 / hourly_p25 / hourly_median / hourly_p75 / hourly_p90 DOUBLE Hourly wage mean and percentile distribution (10th/25th/50th/75th/90th) for the occupation in this area. BLS suppresses percentile columns it can't estimate reliably for small area/occupation combinations — expect null percentiles on lower-employment rows even when hourly_mean is present.
annual_mean / annual_p10 / annual_p25 / annual_median / annual_p75 / annual_p90 DOUBLE Annual wage mean and percentile distribution, same structure as the hourly figures. Same BLS suppression caveat as the hourly percentiles.
is_imputed BOOLEAN Whether BLS imputed (rather than directly surveyed) this row's wage estimate. false for all 54,650 rows in this export — no imputed rows present in the current healthcare-SOC slice, though the flag exists in the source schema and can be true for other occupations/areas.

Example queries (Snowflake)

-- 1. RN wage benchmark for a specific metro area, latest year.
SELECT "area_title", "year", "hourly_median", "hourly_p25", "hourly_p75", "annual_median"
FROM HEALTHPARSE_DATA.WAGE_BENCHMARKS.WAGE_BENCHMARKS
WHERE "occupation_code" = '29-1141'   -- Registered Nurses
  AND "area_type" = 'msa'
  AND "area_title" ILIKE '%Phoenix%'
ORDER BY "year" DESC;

-- 2. Metro-to-metro comparison for a role, ranked by annual median wage.
SELECT "area_title", "annual_median", "total_employment"
FROM HEALTHPARSE_DATA.WAGE_BENCHMARKS.WAGE_BENCHMARKS
WHERE "occupation_code" = '29-1171'   -- Nurse Practitioners
  AND "area_type" = 'msa'
  AND "year" = 2025
ORDER BY "annual_median" DESC
LIMIT 20;

-- 3. National vs. state benchmark spread for offer-competitiveness checks.
SELECT "area_type", "area_title", "hourly_mean", "annual_mean"
FROM HEALTHPARSE_DATA.WAGE_BENCHMARKS.WAGE_BENCHMARKS
WHERE "occupation_code" = '31-1131'   -- Nursing Assistants
  AND "area_type" IN ('national', 'state')
  AND "state" IN ('US', 'CA', 'TX', 'FL')
  AND "year" = 2025;