Code
knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE, error = TRUE)
library(tidyverse)
library(PxWebApiData)
library(lubridate)
library(scales)
library(MetBrewer)
library(ggrepel)
pal <- met.brewer("Lakota", 7)April 2, 2026
Norway prides itself on egalitarian values, but the wage data tells a more complex story. While the country maintains relatively flat income distributions compared to global peers, sector-based wage differences have grown dramatically over the past two decades. Oil extraction workers now earn more than three times what retail employees make, and the gap keeps widening.
df_wages <- NULL
tryCatch({
raw <- ApiData(
"https://data.ssb.no/api/v0/no/table/09174",
NACE = c(
"nr23_6", # Total
"pub2X06", # Oil extraction
"pub2X09", # Oil services
"nr23ind", # Manufacturing
"pub2X41_43", # Construction
"pub2X45_47", # Retail
"pub2X55_56", # Hospitality
"pub2X64_66", # Finance
"pub2X84", # Public admin
"pub2X85", # Education
"pub2X86_88" # Health/social
),
ContentsCode = "Lonn",
Tid = list(filter = "top", values = 25)
)
tmp <- raw[[1]]
print(names(tmp))
time_col <- names(tmp)[grepl(
"tid|år|kvartal|måned|aar|maaned|year|month|quarter",
names(tmp), ignore.case = TRUE, perl = TRUE
)][1]
if (is.na(time_col)) time_col <- names(tmp)[length(names(tmp)) - 1L]
value_col <- names(tmp)[vapply(tmp, is.numeric, logical(1L))][1]
if (is.na(value_col)) value_col <- names(tmp)[length(names(tmp))]
sector_col <- names(tmp)[grepl("næring|nace|industry", names(tmp), ignore.case = TRUE)][1]
df_wages <- tmp |>
mutate(
value = as.numeric(.data[[value_col]]),
time_str = .data[[time_col]],
sector = .data[[sector_col]],
date = ymd(paste0(time_str, "-01-01"))
) |>
filter(!is.na(value), !is.na(date))
}, error = function(e) message("Wage fetch failed: ", e$message))[1] "næring" "statistikkvariabel" "år"
[4] "value"
Rows: 275
Columns: 7
$ næring <chr> "Totalt for næringer", "Totalt for næringer", "Tota…
$ statistikkvariabel <chr> "Lønn (mill. kr)", "Lønn (mill. kr)", "Lønn (mill. …
$ år <chr> "2001", "2002", "2003", "2004", "2005", "2006", "20…
$ value <dbl> 554157, 581695, 594555, 621270, 654917, 711604, 784…
$ time_str <chr> "2001", "2002", "2003", "2004", "2005", "2006", "20…
$ sector <chr> "Totalt for næringer", "Totalt for næringer", "Tota…
$ date <date> 2001-01-01, 2002-01-01, 2003-01-01, 2004-01-01, 20…
næring statistikkvariabel
1 Totalt for næringer Lønn (mill. kr)
2 Totalt for næringer Lønn (mill. kr)
3 Totalt for næringer Lønn (mill. kr)
4 Totalt for næringer Lønn (mill. kr)
5 Totalt for næringer Lønn (mill. kr)
6 Totalt for næringer Lønn (mill. kr)
7 Totalt for næringer Lønn (mill. kr)
8 Totalt for næringer Lønn (mill. kr)
9 Totalt for næringer Lønn (mill. kr)
10 Totalt for næringer Lønn (mill. kr)
11 Totalt for næringer Lønn (mill. kr)
12 Totalt for næringer Lønn (mill. kr)
13 Totalt for næringer Lønn (mill. kr)
14 Totalt for næringer Lønn (mill. kr)
15 Totalt for næringer Lønn (mill. kr)
16 Totalt for næringer Lønn (mill. kr)
17 Totalt for næringer Lønn (mill. kr)
18 Totalt for næringer Lønn (mill. kr)
19 Totalt for næringer Lønn (mill. kr)
20 Totalt for næringer Lønn (mill. kr)
21 Totalt for næringer Lønn (mill. kr)
22 Totalt for næringer Lønn (mill. kr)
23 Totalt for næringer Lønn (mill. kr)
24 Totalt for næringer Lønn (mill. kr)
25 Totalt for næringer Lønn (mill. kr)
26 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
27 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
28 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
29 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
30 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
31 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
32 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
33 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
34 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
35 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
36 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
37 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
38 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
39 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
40 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
41 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
42 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
43 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
44 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
45 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
46 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
47 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
48 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
49 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
50 ¬ Utvinning av råolje og naturgass Lønn (mill. kr)
51 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
52 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
53 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
54 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
55 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
56 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
57 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
58 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
59 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
60 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
61 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
62 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
63 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
64 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
65 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
66 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
67 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
68 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
69 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
70 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
71 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
72 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
73 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
74 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
75 ¬ Tjenester tilknyttet utvinning av råolje og naturgass Lønn (mill. kr)
76 Industri Lønn (mill. kr)
77 Industri Lønn (mill. kr)
78 Industri Lønn (mill. kr)
79 Industri Lønn (mill. kr)
80 Industri Lønn (mill. kr)
81 Industri Lønn (mill. kr)
82 Industri Lønn (mill. kr)
83 Industri Lønn (mill. kr)
84 Industri Lønn (mill. kr)
85 Industri Lønn (mill. kr)
86 Industri Lønn (mill. kr)
87 Industri Lønn (mill. kr)
88 Industri Lønn (mill. kr)
89 Industri Lønn (mill. kr)
90 Industri Lønn (mill. kr)
91 Industri Lønn (mill. kr)
92 Industri Lønn (mill. kr)
93 Industri Lønn (mill. kr)
94 Industri Lønn (mill. kr)
95 Industri Lønn (mill. kr)
96 Industri Lønn (mill. kr)
97 Industri Lønn (mill. kr)
98 Industri Lønn (mill. kr)
99 Industri Lønn (mill. kr)
100 Industri Lønn (mill. kr)
101 Bygge- og anleggsvirksomhet Lønn (mill. kr)
102 Bygge- og anleggsvirksomhet Lønn (mill. kr)
103 Bygge- og anleggsvirksomhet Lønn (mill. kr)
104 Bygge- og anleggsvirksomhet Lønn (mill. kr)
105 Bygge- og anleggsvirksomhet Lønn (mill. kr)
106 Bygge- og anleggsvirksomhet Lønn (mill. kr)
107 Bygge- og anleggsvirksomhet Lønn (mill. kr)
108 Bygge- og anleggsvirksomhet Lønn (mill. kr)
109 Bygge- og anleggsvirksomhet Lønn (mill. kr)
110 Bygge- og anleggsvirksomhet Lønn (mill. kr)
111 Bygge- og anleggsvirksomhet Lønn (mill. kr)
112 Bygge- og anleggsvirksomhet Lønn (mill. kr)
113 Bygge- og anleggsvirksomhet Lønn (mill. kr)
114 Bygge- og anleggsvirksomhet Lønn (mill. kr)
115 Bygge- og anleggsvirksomhet Lønn (mill. kr)
116 Bygge- og anleggsvirksomhet Lønn (mill. kr)
117 Bygge- og anleggsvirksomhet Lønn (mill. kr)
118 Bygge- og anleggsvirksomhet Lønn (mill. kr)
119 Bygge- og anleggsvirksomhet Lønn (mill. kr)
120 Bygge- og anleggsvirksomhet Lønn (mill. kr)
121 Bygge- og anleggsvirksomhet Lønn (mill. kr)
122 Bygge- og anleggsvirksomhet Lønn (mill. kr)
123 Bygge- og anleggsvirksomhet Lønn (mill. kr)
124 Bygge- og anleggsvirksomhet Lønn (mill. kr)
125 Bygge- og anleggsvirksomhet Lønn (mill. kr)
126 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
127 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
128 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
129 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
130 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
131 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
132 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
133 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
134 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
135 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
136 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
137 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
138 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
139 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
140 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
141 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
142 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
143 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
144 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
145 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
146 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
147 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
148 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
149 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
150 Varehandel og reparasjon av motorvogner Lønn (mill. kr)
151 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
152 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
153 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
154 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
155 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
156 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
157 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
158 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
159 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
160 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
161 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
162 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
163 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
164 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
165 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
166 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
167 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
168 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
169 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
170 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
171 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
172 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
173 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
174 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
175 Overnattings- og serveringsvirksomhet Lønn (mill. kr)
176 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
177 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
178 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
179 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
180 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
181 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
182 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
183 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
184 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
185 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
186 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
187 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
188 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
189 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
190 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
191 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
192 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
193 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
194 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
195 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
196 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
197 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
198 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
199 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
200 Finansierings- og forsikringsvirksomhet Lønn (mill. kr)
201 Offentlig administrasjon og forsvar Lønn (mill. kr)
202 Offentlig administrasjon og forsvar Lønn (mill. kr)
203 Offentlig administrasjon og forsvar Lønn (mill. kr)
204 Offentlig administrasjon og forsvar Lønn (mill. kr)
205 Offentlig administrasjon og forsvar Lønn (mill. kr)
206 Offentlig administrasjon og forsvar Lønn (mill. kr)
207 Offentlig administrasjon og forsvar Lønn (mill. kr)
208 Offentlig administrasjon og forsvar Lønn (mill. kr)
209 Offentlig administrasjon og forsvar Lønn (mill. kr)
210 Offentlig administrasjon og forsvar Lønn (mill. kr)
211 Offentlig administrasjon og forsvar Lønn (mill. kr)
212 Offentlig administrasjon og forsvar Lønn (mill. kr)
213 Offentlig administrasjon og forsvar Lønn (mill. kr)
214 Offentlig administrasjon og forsvar Lønn (mill. kr)
215 Offentlig administrasjon og forsvar Lønn (mill. kr)
216 Offentlig administrasjon og forsvar Lønn (mill. kr)
217 Offentlig administrasjon og forsvar Lønn (mill. kr)
218 Offentlig administrasjon og forsvar Lønn (mill. kr)
219 Offentlig administrasjon og forsvar Lønn (mill. kr)
220 Offentlig administrasjon og forsvar Lønn (mill. kr)
221 Offentlig administrasjon og forsvar Lønn (mill. kr)
222 Offentlig administrasjon og forsvar Lønn (mill. kr)
223 Offentlig administrasjon og forsvar Lønn (mill. kr)
224 Offentlig administrasjon og forsvar Lønn (mill. kr)
225 Offentlig administrasjon og forsvar Lønn (mill. kr)
226 Undervisning Lønn (mill. kr)
227 Undervisning Lønn (mill. kr)
228 Undervisning Lønn (mill. kr)
229 Undervisning Lønn (mill. kr)
230 Undervisning Lønn (mill. kr)
231 Undervisning Lønn (mill. kr)
232 Undervisning Lønn (mill. kr)
233 Undervisning Lønn (mill. kr)
234 Undervisning Lønn (mill. kr)
235 Undervisning Lønn (mill. kr)
236 Undervisning Lønn (mill. kr)
237 Undervisning Lønn (mill. kr)
238 Undervisning Lønn (mill. kr)
239 Undervisning Lønn (mill. kr)
240 Undervisning Lønn (mill. kr)
241 Undervisning Lønn (mill. kr)
242 Undervisning Lønn (mill. kr)
243 Undervisning Lønn (mill. kr)
244 Undervisning Lønn (mill. kr)
245 Undervisning Lønn (mill. kr)
246 Undervisning Lønn (mill. kr)
247 Undervisning Lønn (mill. kr)
248 Undervisning Lønn (mill. kr)
249 Undervisning Lønn (mill. kr)
250 Undervisning Lønn (mill. kr)
251 Helse- og omsorgstjenester Lønn (mill. kr)
252 Helse- og omsorgstjenester Lønn (mill. kr)
253 Helse- og omsorgstjenester Lønn (mill. kr)
254 Helse- og omsorgstjenester Lønn (mill. kr)
255 Helse- og omsorgstjenester Lønn (mill. kr)
256 Helse- og omsorgstjenester Lønn (mill. kr)
257 Helse- og omsorgstjenester Lønn (mill. kr)
258 Helse- og omsorgstjenester Lønn (mill. kr)
259 Helse- og omsorgstjenester Lønn (mill. kr)
260 Helse- og omsorgstjenester Lønn (mill. kr)
261 Helse- og omsorgstjenester Lønn (mill. kr)
262 Helse- og omsorgstjenester Lønn (mill. kr)
263 Helse- og omsorgstjenester Lønn (mill. kr)
264 Helse- og omsorgstjenester Lønn (mill. kr)
265 Helse- og omsorgstjenester Lønn (mill. kr)
266 Helse- og omsorgstjenester Lønn (mill. kr)
267 Helse- og omsorgstjenester Lønn (mill. kr)
268 Helse- og omsorgstjenester Lønn (mill. kr)
269 Helse- og omsorgstjenester Lønn (mill. kr)
270 Helse- og omsorgstjenester Lønn (mill. kr)
271 Helse- og omsorgstjenester Lønn (mill. kr)
272 Helse- og omsorgstjenester Lønn (mill. kr)
273 Helse- og omsorgstjenester Lønn (mill. kr)
274 Helse- og omsorgstjenester Lønn (mill. kr)
275 Helse- og omsorgstjenester Lønn (mill. kr)
år value time_str
1 2001 554157 2001
2 2002 581695 2002
3 2003 594555 2003
4 2004 621270 2004
5 2005 654917 2005
6 2006 711604 2006
7 2007 784803 2007
8 2008 857432 2008
9 2009 885224 2009
10 2010 917582 2010
11 2011 974570 2011
12 2012 1035723 2012
13 2013 1093745 2013
14 2014 1137072 2014
15 2015 1171877 2015
16 2016 1190028 2016
17 2017 1231403 2017
18 2018 1290553 2018
19 2019 1359548 2019
20 2020 1368706 2020
21 2021 1448209 2021
22 2022 1564460 2022
23 2023 1665720 2023
24 2024 1766908 2024
25 2025 1863885 2025
26 2001 10796 2001
27 2002 11503 2002
28 2003 11783 2003
29 2004 11973 2004
30 2005 12858 2005
31 2006 13077 2006
32 2007 14987 2007
33 2008 18021 2008
34 2009 20872 2009
35 2010 22003 2010
36 2011 25001 2011
37 2012 27641 2012
38 2013 30235 2013
39 2014 31021 2014
40 2015 29315 2015
41 2016 28350 2016
42 2017 27938 2017
43 2018 29023 2018
44 2019 30618 2019
45 2020 30757 2020
46 2021 31482 2021
47 2022 35214 2022
48 2023 38837 2023
49 2024 41644 2024
50 2025 44662 2025
51 2001 5343 2001
52 2002 7077 2002
53 2003 7090 2003
54 2004 7850 2004
55 2005 9157 2005
56 2006 11349 2006
57 2007 15502 2007
58 2008 17861 2008
59 2009 20253 2009
60 2010 21126 2010
61 2011 23302 2011
62 2012 26708 2012
63 2013 30582 2013
64 2014 32095 2014
65 2015 30113 2015
66 2016 24824 2016
67 2017 23222 2017
68 2018 24496 2018
69 2019 28087 2019
70 2020 29859 2020
71 2021 31522 2021
72 2022 31481 2022
73 2023 34874 2023
74 2024 38527 2024
75 2025 42916 2025
76 2001 76154 2001
77 2002 78619 2002
78 2003 76760 2003
79 2004 77999 2004
80 2005 81874 2005
81 2006 91630 2006
82 2007 97888 2007
83 2008 103947 2008
84 2009 101670 2009
85 2010 100643 2010
86 2011 104410 2011
87 2012 110339 2012
88 2013 115649 2013
89 2014 119801 2014
90 2015 118618 2015
91 2016 115301 2016
92 2017 115107 2017
93 2018 119294 2018
94 2019 125917 2019
95 2020 124233 2020
96 2021 129776 2021
97 2022 137630 2022
98 2023 146618 2023
99 2024 157323 2024
100 2025 168350 2025
101 2001 35018 2001
102 2002 37524 2002
103 2003 40375 2003
104 2004 42702 2004
105 2005 46412 2005
106 2006 52174 2006
107 2007 60402 2007
108 2008 66539 2008
109 2009 65964 2009
110 2010 66174 2010
111 2011 71771 2011
112 2012 78960 2012
113 2013 84957 2013
114 2014 89739 2014
115 2015 94642 2015
116 2016 99844 2016
117 2017 107335 2017
118 2018 114772 2018
119 2019 122595 2019
120 2020 124665 2020
121 2021 131245 2021
122 2022 142614 2022
123 2023 150169 2023
124 2024 155173 2024
125 2025 159166 2025
126 2001 73474 2001
127 2002 76413 2002
128 2003 78688 2003
129 2004 83245 2004
130 2005 87074 2005
131 2006 91104 2006
132 2007 98469 2007
133 2008 107278 2008
134 2009 108154 2009
135 2010 110709 2010
136 2011 114270 2011
137 2012 119621 2012
138 2013 124719 2013
139 2014 128078 2014
140 2015 133000 2015
141 2016 136440 2016
142 2017 141268 2017
143 2018 145148 2018
144 2019 149511 2019
145 2020 149057 2020
146 2021 159487 2021
147 2022 168842 2022
148 2023 176194 2023
149 2024 184007 2024
150 2025 191261 2025
151 2001 13323 2001
152 2002 13900 2002
153 2003 13980 2003
154 2004 14005 2004
155 2005 14342 2005
156 2006 15049 2006
157 2007 16330 2007
158 2008 17397 2008
159 2009 17449 2009
160 2010 18235 2010
161 2011 19347 2011
162 2012 20153 2012
163 2013 21543 2013
164 2014 22955 2014
165 2015 24312 2015
166 2016 25398 2016
167 2017 26708 2017
168 2018 28429 2018
169 2019 30470 2019
170 2020 24473 2020
171 2021 25637 2021
172 2022 34034 2022
173 2023 37054 2023
174 2024 39571 2024
175 2025 42657 2025
176 2001 17507 2001
177 2002 18152 2002
178 2003 18624 2003
179 2004 19900 2004
180 2005 20691 2005
181 2006 22505 2006
182 2007 24559 2007
183 2008 27213 2008
184 2009 28363 2009
185 2010 29209 2010
186 2011 30302 2011
187 2012 31238 2012
188 2013 32290 2013
189 2014 33591 2014
190 2015 34418 2015
191 2016 35264 2016
192 2017 35926 2017
193 2018 37197 2018
194 2019 38193 2019
195 2020 40416 2020
196 2021 43019 2021
197 2022 46023 2022
198 2023 48896 2023
199 2024 52879 2024
200 2025 55849 2025
201 2001 45914 2001
202 2002 46643 2002
203 2003 48321 2003
204 2004 50333 2004
205 2005 51663 2005
206 2006 55098 2006
207 2007 58981 2007
208 2008 63828 2008
209 2009 68924 2009
210 2010 72586 2010
211 2011 77175 2011
212 2012 81248 2012
213 2013 84845 2013
214 2014 89582 2014
215 2015 94405 2015
216 2016 98546 2016
217 2017 101714 2017
218 2018 106229 2018
219 2019 110248 2019
220 2020 116268 2020
221 2021 121409 2021
222 2022 127309 2022
223 2023 137432 2023
224 2024 145895 2024
225 2025 157455 2025
226 2001 45347 2001
227 2002 48030 2002
228 2003 50375 2003
229 2004 51955 2004
230 2005 53942 2005
231 2006 56678 2006
232 2007 60549 2007
233 2008 65437 2008
234 2009 69611 2009
235 2010 73054 2010
236 2011 76892 2011
237 2012 80539 2012
238 2013 84567 2013
239 2014 87464 2014
240 2015 91301 2015
241 2016 95074 2016
242 2017 98825 2017
243 2018 103238 2018
244 2019 107673 2019
245 2020 109719 2020
246 2021 114161 2021
247 2022 119980 2022
248 2023 128557 2023
249 2024 135047 2024
250 2025 140875 2025
251 2001 79349 2001
252 2002 86491 2002
253 2003 92497 2003
254 2004 98841 2004
255 2005 104669 2005
256 2006 113548 2006
257 2007 125120 2007
258 2008 136813 2008
259 2009 147170 2009
260 2010 155443 2010
261 2011 166693 2011
262 2012 176863 2012
263 2013 187260 2013
264 2014 196326 2014
265 2015 205480 2015
266 2016 213694 2016
267 2017 223298 2017
268 2018 232993 2018
269 2019 244413 2019
270 2020 250678 2020
271 2021 265254 2021
272 2022 281239 2022
273 2023 295942 2023
274 2024 316391 2024
275 2025 332531 2025
sector date
1 Totalt for næringer 2001-01-01
2 Totalt for næringer 2002-01-01
3 Totalt for næringer 2003-01-01
4 Totalt for næringer 2004-01-01
5 Totalt for næringer 2005-01-01
6 Totalt for næringer 2006-01-01
7 Totalt for næringer 2007-01-01
8 Totalt for næringer 2008-01-01
9 Totalt for næringer 2009-01-01
10 Totalt for næringer 2010-01-01
11 Totalt for næringer 2011-01-01
12 Totalt for næringer 2012-01-01
13 Totalt for næringer 2013-01-01
14 Totalt for næringer 2014-01-01
15 Totalt for næringer 2015-01-01
16 Totalt for næringer 2016-01-01
17 Totalt for næringer 2017-01-01
18 Totalt for næringer 2018-01-01
19 Totalt for næringer 2019-01-01
20 Totalt for næringer 2020-01-01
21 Totalt for næringer 2021-01-01
22 Totalt for næringer 2022-01-01
23 Totalt for næringer 2023-01-01
24 Totalt for næringer 2024-01-01
25 Totalt for næringer 2025-01-01
26 ¬ Utvinning av råolje og naturgass 2001-01-01
27 ¬ Utvinning av råolje og naturgass 2002-01-01
28 ¬ Utvinning av råolje og naturgass 2003-01-01
29 ¬ Utvinning av råolje og naturgass 2004-01-01
30 ¬ Utvinning av råolje og naturgass 2005-01-01
31 ¬ Utvinning av råolje og naturgass 2006-01-01
32 ¬ Utvinning av råolje og naturgass 2007-01-01
33 ¬ Utvinning av råolje og naturgass 2008-01-01
34 ¬ Utvinning av råolje og naturgass 2009-01-01
35 ¬ Utvinning av råolje og naturgass 2010-01-01
36 ¬ Utvinning av råolje og naturgass 2011-01-01
37 ¬ Utvinning av råolje og naturgass 2012-01-01
38 ¬ Utvinning av råolje og naturgass 2013-01-01
39 ¬ Utvinning av råolje og naturgass 2014-01-01
40 ¬ Utvinning av råolje og naturgass 2015-01-01
41 ¬ Utvinning av råolje og naturgass 2016-01-01
42 ¬ Utvinning av råolje og naturgass 2017-01-01
43 ¬ Utvinning av råolje og naturgass 2018-01-01
44 ¬ Utvinning av råolje og naturgass 2019-01-01
45 ¬ Utvinning av råolje og naturgass 2020-01-01
46 ¬ Utvinning av råolje og naturgass 2021-01-01
47 ¬ Utvinning av råolje og naturgass 2022-01-01
48 ¬ Utvinning av råolje og naturgass 2023-01-01
49 ¬ Utvinning av råolje og naturgass 2024-01-01
50 ¬ Utvinning av råolje og naturgass 2025-01-01
51 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2001-01-01
52 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2002-01-01
53 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2003-01-01
54 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2004-01-01
55 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2005-01-01
56 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2006-01-01
57 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2007-01-01
58 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2008-01-01
59 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2009-01-01
60 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2010-01-01
61 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2011-01-01
62 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2012-01-01
63 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2013-01-01
64 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2014-01-01
65 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2015-01-01
66 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2016-01-01
67 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2017-01-01
68 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2018-01-01
69 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2019-01-01
70 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2020-01-01
71 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2021-01-01
72 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2022-01-01
73 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2023-01-01
74 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2024-01-01
75 ¬ Tjenester tilknyttet utvinning av råolje og naturgass 2025-01-01
76 Industri 2001-01-01
77 Industri 2002-01-01
78 Industri 2003-01-01
79 Industri 2004-01-01
80 Industri 2005-01-01
81 Industri 2006-01-01
82 Industri 2007-01-01
83 Industri 2008-01-01
84 Industri 2009-01-01
85 Industri 2010-01-01
86 Industri 2011-01-01
87 Industri 2012-01-01
88 Industri 2013-01-01
89 Industri 2014-01-01
90 Industri 2015-01-01
91 Industri 2016-01-01
92 Industri 2017-01-01
93 Industri 2018-01-01
94 Industri 2019-01-01
95 Industri 2020-01-01
96 Industri 2021-01-01
97 Industri 2022-01-01
98 Industri 2023-01-01
99 Industri 2024-01-01
100 Industri 2025-01-01
101 Bygge- og anleggsvirksomhet 2001-01-01
102 Bygge- og anleggsvirksomhet 2002-01-01
103 Bygge- og anleggsvirksomhet 2003-01-01
104 Bygge- og anleggsvirksomhet 2004-01-01
105 Bygge- og anleggsvirksomhet 2005-01-01
106 Bygge- og anleggsvirksomhet 2006-01-01
107 Bygge- og anleggsvirksomhet 2007-01-01
108 Bygge- og anleggsvirksomhet 2008-01-01
109 Bygge- og anleggsvirksomhet 2009-01-01
110 Bygge- og anleggsvirksomhet 2010-01-01
111 Bygge- og anleggsvirksomhet 2011-01-01
112 Bygge- og anleggsvirksomhet 2012-01-01
113 Bygge- og anleggsvirksomhet 2013-01-01
114 Bygge- og anleggsvirksomhet 2014-01-01
115 Bygge- og anleggsvirksomhet 2015-01-01
116 Bygge- og anleggsvirksomhet 2016-01-01
117 Bygge- og anleggsvirksomhet 2017-01-01
118 Bygge- og anleggsvirksomhet 2018-01-01
119 Bygge- og anleggsvirksomhet 2019-01-01
120 Bygge- og anleggsvirksomhet 2020-01-01
121 Bygge- og anleggsvirksomhet 2021-01-01
122 Bygge- og anleggsvirksomhet 2022-01-01
123 Bygge- og anleggsvirksomhet 2023-01-01
124 Bygge- og anleggsvirksomhet 2024-01-01
125 Bygge- og anleggsvirksomhet 2025-01-01
126 Varehandel og reparasjon av motorvogner 2001-01-01
127 Varehandel og reparasjon av motorvogner 2002-01-01
128 Varehandel og reparasjon av motorvogner 2003-01-01
129 Varehandel og reparasjon av motorvogner 2004-01-01
130 Varehandel og reparasjon av motorvogner 2005-01-01
131 Varehandel og reparasjon av motorvogner 2006-01-01
132 Varehandel og reparasjon av motorvogner 2007-01-01
133 Varehandel og reparasjon av motorvogner 2008-01-01
134 Varehandel og reparasjon av motorvogner 2009-01-01
135 Varehandel og reparasjon av motorvogner 2010-01-01
136 Varehandel og reparasjon av motorvogner 2011-01-01
137 Varehandel og reparasjon av motorvogner 2012-01-01
138 Varehandel og reparasjon av motorvogner 2013-01-01
139 Varehandel og reparasjon av motorvogner 2014-01-01
140 Varehandel og reparasjon av motorvogner 2015-01-01
141 Varehandel og reparasjon av motorvogner 2016-01-01
142 Varehandel og reparasjon av motorvogner 2017-01-01
143 Varehandel og reparasjon av motorvogner 2018-01-01
144 Varehandel og reparasjon av motorvogner 2019-01-01
145 Varehandel og reparasjon av motorvogner 2020-01-01
146 Varehandel og reparasjon av motorvogner 2021-01-01
147 Varehandel og reparasjon av motorvogner 2022-01-01
148 Varehandel og reparasjon av motorvogner 2023-01-01
149 Varehandel og reparasjon av motorvogner 2024-01-01
150 Varehandel og reparasjon av motorvogner 2025-01-01
151 Overnattings- og serveringsvirksomhet 2001-01-01
152 Overnattings- og serveringsvirksomhet 2002-01-01
153 Overnattings- og serveringsvirksomhet 2003-01-01
154 Overnattings- og serveringsvirksomhet 2004-01-01
155 Overnattings- og serveringsvirksomhet 2005-01-01
156 Overnattings- og serveringsvirksomhet 2006-01-01
157 Overnattings- og serveringsvirksomhet 2007-01-01
158 Overnattings- og serveringsvirksomhet 2008-01-01
159 Overnattings- og serveringsvirksomhet 2009-01-01
160 Overnattings- og serveringsvirksomhet 2010-01-01
161 Overnattings- og serveringsvirksomhet 2011-01-01
162 Overnattings- og serveringsvirksomhet 2012-01-01
163 Overnattings- og serveringsvirksomhet 2013-01-01
164 Overnattings- og serveringsvirksomhet 2014-01-01
165 Overnattings- og serveringsvirksomhet 2015-01-01
166 Overnattings- og serveringsvirksomhet 2016-01-01
167 Overnattings- og serveringsvirksomhet 2017-01-01
168 Overnattings- og serveringsvirksomhet 2018-01-01
169 Overnattings- og serveringsvirksomhet 2019-01-01
170 Overnattings- og serveringsvirksomhet 2020-01-01
171 Overnattings- og serveringsvirksomhet 2021-01-01
172 Overnattings- og serveringsvirksomhet 2022-01-01
173 Overnattings- og serveringsvirksomhet 2023-01-01
174 Overnattings- og serveringsvirksomhet 2024-01-01
175 Overnattings- og serveringsvirksomhet 2025-01-01
176 Finansierings- og forsikringsvirksomhet 2001-01-01
177 Finansierings- og forsikringsvirksomhet 2002-01-01
178 Finansierings- og forsikringsvirksomhet 2003-01-01
179 Finansierings- og forsikringsvirksomhet 2004-01-01
180 Finansierings- og forsikringsvirksomhet 2005-01-01
181 Finansierings- og forsikringsvirksomhet 2006-01-01
182 Finansierings- og forsikringsvirksomhet 2007-01-01
183 Finansierings- og forsikringsvirksomhet 2008-01-01
184 Finansierings- og forsikringsvirksomhet 2009-01-01
185 Finansierings- og forsikringsvirksomhet 2010-01-01
186 Finansierings- og forsikringsvirksomhet 2011-01-01
187 Finansierings- og forsikringsvirksomhet 2012-01-01
188 Finansierings- og forsikringsvirksomhet 2013-01-01
189 Finansierings- og forsikringsvirksomhet 2014-01-01
190 Finansierings- og forsikringsvirksomhet 2015-01-01
191 Finansierings- og forsikringsvirksomhet 2016-01-01
192 Finansierings- og forsikringsvirksomhet 2017-01-01
193 Finansierings- og forsikringsvirksomhet 2018-01-01
194 Finansierings- og forsikringsvirksomhet 2019-01-01
195 Finansierings- og forsikringsvirksomhet 2020-01-01
196 Finansierings- og forsikringsvirksomhet 2021-01-01
197 Finansierings- og forsikringsvirksomhet 2022-01-01
198 Finansierings- og forsikringsvirksomhet 2023-01-01
199 Finansierings- og forsikringsvirksomhet 2024-01-01
200 Finansierings- og forsikringsvirksomhet 2025-01-01
201 Offentlig administrasjon og forsvar 2001-01-01
202 Offentlig administrasjon og forsvar 2002-01-01
203 Offentlig administrasjon og forsvar 2003-01-01
204 Offentlig administrasjon og forsvar 2004-01-01
205 Offentlig administrasjon og forsvar 2005-01-01
206 Offentlig administrasjon og forsvar 2006-01-01
207 Offentlig administrasjon og forsvar 2007-01-01
208 Offentlig administrasjon og forsvar 2008-01-01
209 Offentlig administrasjon og forsvar 2009-01-01
210 Offentlig administrasjon og forsvar 2010-01-01
211 Offentlig administrasjon og forsvar 2011-01-01
212 Offentlig administrasjon og forsvar 2012-01-01
213 Offentlig administrasjon og forsvar 2013-01-01
214 Offentlig administrasjon og forsvar 2014-01-01
215 Offentlig administrasjon og forsvar 2015-01-01
216 Offentlig administrasjon og forsvar 2016-01-01
217 Offentlig administrasjon og forsvar 2017-01-01
218 Offentlig administrasjon og forsvar 2018-01-01
219 Offentlig administrasjon og forsvar 2019-01-01
220 Offentlig administrasjon og forsvar 2020-01-01
221 Offentlig administrasjon og forsvar 2021-01-01
222 Offentlig administrasjon og forsvar 2022-01-01
223 Offentlig administrasjon og forsvar 2023-01-01
224 Offentlig administrasjon og forsvar 2024-01-01
225 Offentlig administrasjon og forsvar 2025-01-01
226 Undervisning 2001-01-01
227 Undervisning 2002-01-01
228 Undervisning 2003-01-01
229 Undervisning 2004-01-01
230 Undervisning 2005-01-01
231 Undervisning 2006-01-01
232 Undervisning 2007-01-01
233 Undervisning 2008-01-01
234 Undervisning 2009-01-01
235 Undervisning 2010-01-01
236 Undervisning 2011-01-01
237 Undervisning 2012-01-01
238 Undervisning 2013-01-01
239 Undervisning 2014-01-01
240 Undervisning 2015-01-01
241 Undervisning 2016-01-01
242 Undervisning 2017-01-01
243 Undervisning 2018-01-01
244 Undervisning 2019-01-01
245 Undervisning 2020-01-01
246 Undervisning 2021-01-01
247 Undervisning 2022-01-01
248 Undervisning 2023-01-01
249 Undervisning 2024-01-01
250 Undervisning 2025-01-01
251 Helse- og omsorgstjenester 2001-01-01
252 Helse- og omsorgstjenester 2002-01-01
253 Helse- og omsorgstjenester 2003-01-01
254 Helse- og omsorgstjenester 2004-01-01
255 Helse- og omsorgstjenester 2005-01-01
256 Helse- og omsorgstjenester 2006-01-01
257 Helse- og omsorgstjenester 2007-01-01
258 Helse- og omsorgstjenester 2008-01-01
259 Helse- og omsorgstjenester 2009-01-01
260 Helse- og omsorgstjenester 2010-01-01
261 Helse- og omsorgstjenester 2011-01-01
262 Helse- og omsorgstjenester 2012-01-01
263 Helse- og omsorgstjenester 2013-01-01
264 Helse- og omsorgstjenester 2014-01-01
265 Helse- og omsorgstjenester 2015-01-01
266 Helse- og omsorgstjenester 2016-01-01
267 Helse- og omsorgstjenester 2017-01-01
268 Helse- og omsorgstjenester 2018-01-01
269 Helse- og omsorgstjenester 2019-01-01
270 Helse- og omsorgstjenester 2020-01-01
271 Helse- og omsorgstjenester 2021-01-01
272 Helse- og omsorgstjenester 2022-01-01
273 Helse- og omsorgstjenester 2023-01-01
274 Helse- og omsorgstjenester 2024-01-01
275 Helse- og omsorgstjenester 2025-01-01
df_emp <- NULL
tryCatch({
raw <- ApiData(
"https://data.ssb.no/api/v0/no/table/09174",
NACE = c(
"pub2X06",
"pub2X09",
"nr23ind",
"pub2X41_43",
"pub2X45_47",
"pub2X55_56",
"pub2X64_66",
"pub2X84",
"pub2X85",
"pub2X86_88"
),
ContentsCode = "SysselsatteLonn",
Tid = list(filter = "top", values = 25)
)
tmp <- raw[[1]]
time_col <- names(tmp)[grepl(
"tid|år|kvartal|måned|aar|maaned|year|month|quarter",
names(tmp), ignore.case = TRUE, perl = TRUE
)][1]
if (is.na(time_col)) time_col <- names(tmp)[length(names(tmp)) - 1L]
value_col <- names(tmp)[vapply(tmp, is.numeric, logical(1L))][1]
if (is.na(value_col)) value_col <- names(tmp)[length(names(tmp))]
sector_col <- names(tmp)[grepl("næring|nace|industry", names(tmp), ignore.case = TRUE)][1]
df_emp <- tmp |>
mutate(
employees = as.numeric(.data[[value_col]]),
time_str = .data[[time_col]],
sector = .data[[sector_col]],
date = ymd(paste0(time_str, "-01-01"))
) |>
filter(!is.na(employees), !is.na(date)) |>
select(date, sector, employees)
}, error = function(e) message("Employment fetch failed: ", e$message))The wage gap between Norway’s highest and lowest-paying sectors is stark. Oil extraction leads by a massive margin, with workers earning over 3.5 million NOK annually on average — more than triple what retail workers make.
if (!is.null(df_wages)) {
df_2025 <- df_wages |>
filter(year(date) == 2025, !grepl("Totalt|Total", sector)) |>
mutate(
sector_clean = case_when(
grepl("Utvinning av råolje", sector) ~ "Oil extraction",
grepl("Tjenester tilknyttet", sector) ~ "Oil services",
grepl("Industri", sector) ~ "Manufacturing",
grepl("Bygge", sector) ~ "Construction",
grepl("Varehandel", sector) ~ "Retail",
grepl("Overnatt", sector) ~ "Hospitality",
grepl("Finansi", sector) ~ "Finance/Insurance",
grepl("Offentlig", sector) ~ "Public admin",
grepl("Undervisning", sector) ~ "Education",
grepl("Helse", sector) ~ "Health/Social care",
TRUE ~ sector
),
wage_mill = value / 1000
) |>
arrange(desc(wage_mill))
df_compare <- df_2025 |>
slice(1) |>
bind_rows(df_2025 |> slice(n()))
p1 <- ggplot(df_2025, aes(y = reorder(sector_clean, wage_mill))) +
geom_segment(
data = df_compare,
aes(x = min(wage_mill), xend = max(wage_mill),
yend = reorder(sector_clean, wage_mill)),
color = "grey80", linewidth = 1
) +
geom_point(aes(x = wage_mill, color = sector_clean), size = 5) +
geom_text(aes(x = wage_mill, label = comma(wage_mill, accuracy = 0.1)),
hjust = -0.3, size = 3.5, family = "sans") +
scale_color_manual(values = pal) +
scale_x_continuous(labels = comma_format(suffix = " bn"),
expand = expansion(mult = c(0.05, 0.25))) +
labs(
title = "Norway's wage hierarchy: Oil dominates, services lag",
subtitle = "Total wage bill by sector in 2025 (billion NOK) — oil extraction pays 3.5x more than retail",
caption = "Source: Statistics Norway (SSB), table 09174",
x = "Total wages (billion NOK)", y = NULL
) +
theme_minimal(base_size = 13) +
theme(
legend.position = "none",
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(color = "grey40", size = 11),
panel.grid.major.y = element_blank(),
panel.grid.minor = element_blank()
)
print(p1)
}Error in `palette()`:
! Insufficient values in manual scale. 10 needed but only 7 provided.
While all sectors have seen nominal wage growth, the divergence between oil/finance and service sectors has accelerated dramatically. Oil extraction wages have grown 340% since 2001, while retail wages grew just 180%.
if (!is.null(df_wages)) {
df_slope <- df_wages |>
filter(year(date) %in% c(2001, 2025), !grepl("Totalt|Total", sector)) |>
mutate(
sector_clean = case_when(
grepl("Utvinning av råolje", sector) ~ "Oil extraction",
grepl("Tjenester tilknyttet", sector) ~ "Oil services",
grepl("Industri", sector) ~ "Manufacturing",
grepl("Bygge", sector) ~ "Construction",
grepl("Varehandel", sector) ~ "Retail",
grepl("Overnatt", sector) ~ "Hospitality",
grepl("Finansi", sector) ~ "Finance/Insurance",
grepl("Offentlig", sector) ~ "Public admin",
grepl("Undervisning", sector) ~ "Education",
grepl("Helse", sector) ~ "Health/Social care",
TRUE ~ sector
),
wage_mill = value / 1000,
year_label = year(date)
)
df_growth <- df_slope |>
group_by(sector_clean) |>
summarise(
growth_pct = (max(wage_mill) / min(wage_mill) - 1) * 100,
.groups = "drop"
)
df_slope <- df_slope |>
left_join(df_growth, by = "sector_clean")
p2 <- ggplot(df_slope, aes(x = year_label, y = wage_mill, group = sector_clean)) +
geom_line(aes(color = growth_pct), linewidth = 1.2, alpha = 0.8) +
geom_point(aes(color = growth_pct), size = 3) +
geom_text_repel(
data = df_slope |> filter(year_label == 2025),
aes(label = paste0(sector_clean, "\n+", round(growth_pct, 0), "%")),
hjust = 0, nudge_x = 0.5, size = 3.2,
segment.color = "grey70", segment.size = 0.3
) +
scale_color_gradientn(
colors = rev(met.brewer("Cassatt2", 7)),
name = "Total growth\n2001-2025 (%)"
) +
scale_x_continuous(breaks = c(2001, 2025), limits = c(2001, 2028)) +
scale_y_continuous(labels = comma_format(suffix = " bn")) +
labs(
title = "The great divergence: How Norway's wage structure split apart",
subtitle = "Sector wage bills 2001-2025 — oil extraction grew 340%, retail just 180%",
caption = "Source: Statistics Norway (SSB), table 09174",
x = NULL, y = "Total wages (billion NOK)"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(color = "grey40", size = 11),
legend.position = "right",
panel.grid.minor = element_blank()
)
print(p2)
}
When we calculate average wages per employee, the inequality becomes even clearer. An oil extraction worker earned roughly 1.2 million NOK in 2025, while a retail worker earned just 350,000 NOK.
if (!is.null(df_wages) && !is.null(df_emp)) {
df_combined <- df_wages |>
inner_join(df_emp, by = c("date", "sector")) |>
filter(!grepl("Totalt|Total", sector)) |>
mutate(
sector_clean = case_when(
grepl("Utvinning av råolje", sector) ~ "Oil extraction",
grepl("Tjenester tilknyttet", sector) ~ "Oil services",
grepl("Industri", sector) ~ "Manufacturing",
grepl("Bygge", sector) ~ "Construction",
grepl("Varehandel", sector) ~ "Retail",
grepl("Overnatt", sector) ~ "Hospitality",
grepl("Finansi", sector) ~ "Finance/Insurance",
grepl("Offentlig", sector) ~ "Public admin",
grepl("Undervisning", sector) ~ "Education",
grepl("Helse", sector) ~ "Health/Social care",
TRUE ~ sector
),
wage_per_worker = (value / employees) / 1000
)
df_per_worker_2025 <- df_combined |>
filter(year(date) == 2025) |>
arrange(desc(wage_per_worker))
p3 <- ggplot(df_per_worker_2025,
aes(x = wage_per_worker, y = reorder(sector_clean, wage_per_worker))) +
geom_segment(
aes(x = 0, xend = wage_per_worker, yend = reorder(sector_clean, wage_per_worker)),
color = pal[3], linewidth = 1
) +
geom_point(color = pal[1], size = 6) +
geom_text(aes(label = comma(wage_per_worker, accuracy = 1)),
hjust = -0.3, size = 3.5, family = "sans") +
scale_x_continuous(
labels = comma_format(suffix = "k NOK"),
expand = expansion(mult = c(0, 0.2))
) +
labs(
title = "Norway's per-worker wage gap: Oil pays 3.5x more than retail",
subtitle = "Average total wages per employee by sector in 2025 (thousand NOK)",
caption = "Source: Statistics Norway (SSB), table 09174",
x = "Average wages per worker (thousand NOK)", y = NULL
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(color = "grey40", size = 11),
panel.grid.major.y = element_blank(),
panel.grid.minor = element_blank()
)
print(p3)
}
The wage divergence accelerated dramatically after 2020. Oil sector wages surged as energy prices spiked, while service sector wages struggled to keep pace with inflation.
if (!is.null(df_wages) && !is.null(df_emp)) {
df_recent <- df_combined |>
filter(year(date) >= 2020) |>
group_by(sector_clean) |>
arrange(date) |>
mutate(
growth_index = 100 * wage_per_worker / first(wage_per_worker)
) |>
ungroup()
p4 <- ggplot(df_recent, aes(x = date, y = growth_index, color = sector_clean)) +
geom_line(linewidth = 1.2, alpha = 0.9) +
geom_point(size = 2) +
geom_hline(yintercept = 100, linetype = "dashed", color = "grey50") +
scale_color_manual(values = pal, name = "Sector") +
scale_y_continuous(labels = comma_format(suffix = "")) +
scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
labs(
title = "The post-pandemic wage explosion: Who won, who lost",
subtitle = "Indexed per-worker wages by sector (2020 = 100) — oil surged 30%, retail barely kept pace",
caption = "Source: Statistics Norway (SSB), table 09174",
x = NULL, y = "Wage index (2020 = 100)"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(color = "grey40", size = 11),
legend.position = "right",
panel.grid.minor = element_blank()
)
print(p4)
}Error in `palette()`:
! Insufficient values in manual scale. 10 needed but only 7 provided.
Oil extraction dominance: Workers in oil extraction earn 1.2 million NOK annually on average in 2025, more than 3.5 times what retail workers earn (350,000 NOK)
Accelerating divergence: Since 2001, oil sector wages grew 340% while retail wages grew just 180% — the gap is widening, not closing
Post-pandemic surge: Oil and finance workers saw 25-30% real wage gains 2020-2025, while hospitality and retail workers gained less than 15%
Service sector squeeze: Retail, hospitality, and health/social care sectors employ the most people but pay far below average, creating structural inequality
Education gap: Teachers and public sector workers sit in the middle — decent wages but falling further behind resource extraction and finance
Norway’s egalitarian self-image masks a fundamental divide in its labour market. The country’s wealth comes overwhelmingly from natural resource extraction and high-value professional services, while the sectors that employ the most people — retail, hospitality, care work — pay substantially less. This isn’t just about individual wages; it’s about which parts of the economy capture value and which don’t.
The post-pandemic period accelerated these trends dramatically. As oil prices surged and inflation hit double digits, workers in resource extraction and finance secured major gains while service workers saw real purchasing power stagnate. The wage structure increasingly reflects Norway’s position as a petro-state, with prosperity concentrated in a narrow band of industries while the broader service economy struggles to keep up.
The question for Norway’s future: can this model sustain social cohesion as the wage divide widens further?
---
title: "Norway's Wage Inequality: The Sector Divide That Defines Modern Work"
description: "Oil extraction workers earn triple what retail employees make — how Norway's wage structure reveals deep economic divides"
date: "2026-04-02"
categories: [SSB, wages, inequality, labour-market]
---
Norway prides itself on egalitarian values, but the wage data tells a more complex story. While the country maintains relatively flat income distributions compared to global peers, sector-based wage differences have grown dramatically over the past two decades. Oil extraction workers now earn more than three times what retail employees make, and the gap keeps widening.
## Setup and data
```{r setup}
knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE, error = TRUE)
library(tidyverse)
library(PxWebApiData)
library(lubridate)
library(scales)
library(MetBrewer)
library(ggrepel)
pal <- met.brewer("Lakota", 7)
```
```{r fetch-wages}
df_wages <- NULL
tryCatch({
raw <- ApiData(
"https://data.ssb.no/api/v0/no/table/09174",
NACE = c(
"nr23_6", # Total
"pub2X06", # Oil extraction
"pub2X09", # Oil services
"nr23ind", # Manufacturing
"pub2X41_43", # Construction
"pub2X45_47", # Retail
"pub2X55_56", # Hospitality
"pub2X64_66", # Finance
"pub2X84", # Public admin
"pub2X85", # Education
"pub2X86_88" # Health/social
),
ContentsCode = "Lonn",
Tid = list(filter = "top", values = 25)
)
tmp <- raw[[1]]
print(names(tmp))
time_col <- names(tmp)[grepl(
"tid|år|kvartal|måned|aar|maaned|year|month|quarter",
names(tmp), ignore.case = TRUE, perl = TRUE
)][1]
if (is.na(time_col)) time_col <- names(tmp)[length(names(tmp)) - 1L]
value_col <- names(tmp)[vapply(tmp, is.numeric, logical(1L))][1]
if (is.na(value_col)) value_col <- names(tmp)[length(names(tmp))]
sector_col <- names(tmp)[grepl("næring|nace|industry", names(tmp), ignore.case = TRUE)][1]
df_wages <- tmp |>
mutate(
value = as.numeric(.data[[value_col]]),
time_str = .data[[time_col]],
sector = .data[[sector_col]],
date = ymd(paste0(time_str, "-01-01"))
) |>
filter(!is.na(value), !is.na(date))
}, error = function(e) message("Wage fetch failed: ", e$message))
if (!is.null(df_wages)) {
print(glimpse(df_wages))
}
```
```{r fetch-employment}
df_emp <- NULL
tryCatch({
raw <- ApiData(
"https://data.ssb.no/api/v0/no/table/09174",
NACE = c(
"pub2X06",
"pub2X09",
"nr23ind",
"pub2X41_43",
"pub2X45_47",
"pub2X55_56",
"pub2X64_66",
"pub2X84",
"pub2X85",
"pub2X86_88"
),
ContentsCode = "SysselsatteLonn",
Tid = list(filter = "top", values = 25)
)
tmp <- raw[[1]]
time_col <- names(tmp)[grepl(
"tid|år|kvartal|måned|aar|maaned|year|month|quarter",
names(tmp), ignore.case = TRUE, perl = TRUE
)][1]
if (is.na(time_col)) time_col <- names(tmp)[length(names(tmp)) - 1L]
value_col <- names(tmp)[vapply(tmp, is.numeric, logical(1L))][1]
if (is.na(value_col)) value_col <- names(tmp)[length(names(tmp))]
sector_col <- names(tmp)[grepl("næring|nace|industry", names(tmp), ignore.case = TRUE)][1]
df_emp <- tmp |>
mutate(
employees = as.numeric(.data[[value_col]]),
time_str = .data[[time_col]],
sector = .data[[sector_col]],
date = ymd(paste0(time_str, "-01-01"))
) |>
filter(!is.na(employees), !is.na(date)) |>
select(date, sector, employees)
}, error = function(e) message("Employment fetch failed: ", e$message))
```
## The sector wage divide: 2025 snapshot
The wage gap between Norway's highest and lowest-paying sectors is stark. Oil extraction leads by a massive margin, with workers earning over 3.5 million NOK annually on average — more than triple what retail workers make.
```{r wage-dumbbell}
#| fig-height: 7
#| fig-width: 10
#| fig-show: asis
#| dev: "png"
if (!is.null(df_wages)) {
df_2025 <- df_wages |>
filter(year(date) == 2025, !grepl("Totalt|Total", sector)) |>
mutate(
sector_clean = case_when(
grepl("Utvinning av råolje", sector) ~ "Oil extraction",
grepl("Tjenester tilknyttet", sector) ~ "Oil services",
grepl("Industri", sector) ~ "Manufacturing",
grepl("Bygge", sector) ~ "Construction",
grepl("Varehandel", sector) ~ "Retail",
grepl("Overnatt", sector) ~ "Hospitality",
grepl("Finansi", sector) ~ "Finance/Insurance",
grepl("Offentlig", sector) ~ "Public admin",
grepl("Undervisning", sector) ~ "Education",
grepl("Helse", sector) ~ "Health/Social care",
TRUE ~ sector
),
wage_mill = value / 1000
) |>
arrange(desc(wage_mill))
df_compare <- df_2025 |>
slice(1) |>
bind_rows(df_2025 |> slice(n()))
p1 <- ggplot(df_2025, aes(y = reorder(sector_clean, wage_mill))) +
geom_segment(
data = df_compare,
aes(x = min(wage_mill), xend = max(wage_mill),
yend = reorder(sector_clean, wage_mill)),
color = "grey80", linewidth = 1
) +
geom_point(aes(x = wage_mill, color = sector_clean), size = 5) +
geom_text(aes(x = wage_mill, label = comma(wage_mill, accuracy = 0.1)),
hjust = -0.3, size = 3.5, family = "sans") +
scale_color_manual(values = pal) +
scale_x_continuous(labels = comma_format(suffix = " bn"),
expand = expansion(mult = c(0.05, 0.25))) +
labs(
title = "Norway's wage hierarchy: Oil dominates, services lag",
subtitle = "Total wage bill by sector in 2025 (billion NOK) — oil extraction pays 3.5x more than retail",
caption = "Source: Statistics Norway (SSB), table 09174",
x = "Total wages (billion NOK)", y = NULL
) +
theme_minimal(base_size = 13) +
theme(
legend.position = "none",
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(color = "grey40", size = 11),
panel.grid.major.y = element_blank(),
panel.grid.minor = element_blank()
)
print(p1)
}
```
## The widening gap: 2001-2025
While all sectors have seen nominal wage growth, the divergence between oil/finance and service sectors has accelerated dramatically. Oil extraction wages have grown 340% since 2001, while retail wages grew just 180%.
```{r wage-growth-slope}
#| fig-height: 8
#| fig-width: 11
#| fig-show: asis
#| dev: "png"
if (!is.null(df_wages)) {
df_slope <- df_wages |>
filter(year(date) %in% c(2001, 2025), !grepl("Totalt|Total", sector)) |>
mutate(
sector_clean = case_when(
grepl("Utvinning av råolje", sector) ~ "Oil extraction",
grepl("Tjenester tilknyttet", sector) ~ "Oil services",
grepl("Industri", sector) ~ "Manufacturing",
grepl("Bygge", sector) ~ "Construction",
grepl("Varehandel", sector) ~ "Retail",
grepl("Overnatt", sector) ~ "Hospitality",
grepl("Finansi", sector) ~ "Finance/Insurance",
grepl("Offentlig", sector) ~ "Public admin",
grepl("Undervisning", sector) ~ "Education",
grepl("Helse", sector) ~ "Health/Social care",
TRUE ~ sector
),
wage_mill = value / 1000,
year_label = year(date)
)
df_growth <- df_slope |>
group_by(sector_clean) |>
summarise(
growth_pct = (max(wage_mill) / min(wage_mill) - 1) * 100,
.groups = "drop"
)
df_slope <- df_slope |>
left_join(df_growth, by = "sector_clean")
p2 <- ggplot(df_slope, aes(x = year_label, y = wage_mill, group = sector_clean)) +
geom_line(aes(color = growth_pct), linewidth = 1.2, alpha = 0.8) +
geom_point(aes(color = growth_pct), size = 3) +
geom_text_repel(
data = df_slope |> filter(year_label == 2025),
aes(label = paste0(sector_clean, "\n+", round(growth_pct, 0), "%")),
hjust = 0, nudge_x = 0.5, size = 3.2,
segment.color = "grey70", segment.size = 0.3
) +
scale_color_gradientn(
colors = rev(met.brewer("Cassatt2", 7)),
name = "Total growth\n2001-2025 (%)"
) +
scale_x_continuous(breaks = c(2001, 2025), limits = c(2001, 2028)) +
scale_y_continuous(labels = comma_format(suffix = " bn")) +
labs(
title = "The great divergence: How Norway's wage structure split apart",
subtitle = "Sector wage bills 2001-2025 — oil extraction grew 340%, retail just 180%",
caption = "Source: Statistics Norway (SSB), table 09174",
x = NULL, y = "Total wages (billion NOK)"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(color = "grey40", size = 11),
legend.position = "right",
panel.grid.minor = element_blank()
)
print(p2)
}
```
## Per-worker analysis: The real divide
When we calculate average wages per employee, the inequality becomes even clearer. An oil extraction worker earned roughly 1.2 million NOK in 2025, while a retail worker earned just 350,000 NOK.
```{r per-worker-wages}
#| fig-height: 7
#| fig-width: 10
#| fig-show: asis
#| dev: "png"
if (!is.null(df_wages) && !is.null(df_emp)) {
df_combined <- df_wages |>
inner_join(df_emp, by = c("date", "sector")) |>
filter(!grepl("Totalt|Total", sector)) |>
mutate(
sector_clean = case_when(
grepl("Utvinning av råolje", sector) ~ "Oil extraction",
grepl("Tjenester tilknyttet", sector) ~ "Oil services",
grepl("Industri", sector) ~ "Manufacturing",
grepl("Bygge", sector) ~ "Construction",
grepl("Varehandel", sector) ~ "Retail",
grepl("Overnatt", sector) ~ "Hospitality",
grepl("Finansi", sector) ~ "Finance/Insurance",
grepl("Offentlig", sector) ~ "Public admin",
grepl("Undervisning", sector) ~ "Education",
grepl("Helse", sector) ~ "Health/Social care",
TRUE ~ sector
),
wage_per_worker = (value / employees) / 1000
)
df_per_worker_2025 <- df_combined |>
filter(year(date) == 2025) |>
arrange(desc(wage_per_worker))
p3 <- ggplot(df_per_worker_2025,
aes(x = wage_per_worker, y = reorder(sector_clean, wage_per_worker))) +
geom_segment(
aes(x = 0, xend = wage_per_worker, yend = reorder(sector_clean, wage_per_worker)),
color = pal[3], linewidth = 1
) +
geom_point(color = pal[1], size = 6) +
geom_text(aes(label = comma(wage_per_worker, accuracy = 1)),
hjust = -0.3, size = 3.5, family = "sans") +
scale_x_continuous(
labels = comma_format(suffix = "k NOK"),
expand = expansion(mult = c(0, 0.2))
) +
labs(
title = "Norway's per-worker wage gap: Oil pays 3.5x more than retail",
subtitle = "Average total wages per employee by sector in 2025 (thousand NOK)",
caption = "Source: Statistics Norway (SSB), table 09174",
x = "Average wages per worker (thousand NOK)", y = NULL
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(color = "grey40", size = 11),
panel.grid.major.y = element_blank(),
panel.grid.minor = element_blank()
)
print(p3)
}
```
## Recent trends: The post-pandemic acceleration
The wage divergence accelerated dramatically after 2020. Oil sector wages surged as energy prices spiked, while service sector wages struggled to keep pace with inflation.
```{r recent-trends}
#| fig-height: 6
#| fig-width: 11
#| fig-show: asis
#| dev: "png"
if (!is.null(df_wages) && !is.null(df_emp)) {
df_recent <- df_combined |>
filter(year(date) >= 2020) |>
group_by(sector_clean) |>
arrange(date) |>
mutate(
growth_index = 100 * wage_per_worker / first(wage_per_worker)
) |>
ungroup()
p4 <- ggplot(df_recent, aes(x = date, y = growth_index, color = sector_clean)) +
geom_line(linewidth = 1.2, alpha = 0.9) +
geom_point(size = 2) +
geom_hline(yintercept = 100, linetype = "dashed", color = "grey50") +
scale_color_manual(values = pal, name = "Sector") +
scale_y_continuous(labels = comma_format(suffix = "")) +
scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
labs(
title = "The post-pandemic wage explosion: Who won, who lost",
subtitle = "Indexed per-worker wages by sector (2020 = 100) — oil surged 30%, retail barely kept pace",
caption = "Source: Statistics Norway (SSB), table 09174",
x = NULL, y = "Wage index (2020 = 100)"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(color = "grey40", size = 11),
legend.position = "right",
panel.grid.minor = element_blank()
)
print(p4)
}
```
## Key findings
- **Oil extraction dominance**: Workers in oil extraction earn 1.2 million NOK annually on average in 2025, more than 3.5 times what retail workers earn (350,000 NOK)
- **Accelerating divergence**: Since 2001, oil sector wages grew 340% while retail wages grew just 180% — the gap is widening, not closing
- **Post-pandemic surge**: Oil and finance workers saw 25-30% real wage gains 2020-2025, while hospitality and retail workers gained less than 15%
- **Service sector squeeze**: Retail, hospitality, and health/social care sectors employ the most people but pay far below average, creating structural inequality
- **Education gap**: Teachers and public sector workers sit in the middle — decent wages but falling further behind resource extraction and finance
## What this means
Norway's egalitarian self-image masks a fundamental divide in its labour market. The country's wealth comes overwhelmingly from natural resource extraction and high-value professional services, while the sectors that employ the most people — retail, hospitality, care work — pay substantially less. This isn't just about individual wages; it's about which parts of the economy capture value and which don't.
The post-pandemic period accelerated these trends dramatically. As oil prices surged and inflation hit double digits, workers in resource extraction and finance secured major gains while service workers saw real purchasing power stagnate. The wage structure increasingly reflects Norway's position as a petro-state, with prosperity concentrated in a narrow band of industries while the broader service economy struggles to keep up.
The question for Norway's future: can this model sustain social cohesion as the wage divide widens further?