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;