Euro indicators 17 June 2024 Next release: 16 September 2024
First quarter of 2024
Skip to the content
Increase at 5.5% in EU
Overview
In the first quarter of 2024 the hourly labour costs rose by 5.1% in the euro area and by 5.5% in the EU, compared with the same quarter of the previous year. These figures are published by Eurostat, the statistical office of the European Union.
The two main components of labour costs are wages & salaries and non-wage costs.
In the euro area, in the first quarter of 2024 compared with the same quarter of the previous year
the costs of hourly wages & salaries increased by 5.3%, while
the non-wage component increased by 4.5%.
In the EU, in the first quarter of 2024 compared with the same quarter of the previous year
the costs of hourly wages & salaries increased by 5.8% and
the non-wage component increased by 4.8%.
Breakdown by economic activity
In the first quarter of 2024 compared with the same quarter of the previous year, hourly labour costs in the euro area rose by 5.3% in the (mainly) non-business economy and by 5.0% in the business economy:
+4.8% in industry,
+5.2% in construction and
+5.0% in services.
In the EU, hourly labour costs grew by 5.6% in the (mainly) non-business economy and by 5.5% in the business economy:
+5.5% in industry,
+5.8 % in construction and
+5.5% in services.
In the EU, in the first quarter of 2024 compared with the same quarter of the previous year, the economic activity (NACE Rev. 2 sections) that recorded the highest increases in hourly wage costs were:
R – ‘Arts, entertainment and recreation’ (+8.7%)
B – ‘Mining and quarrying’ (+7.8%).
The lowest annual increases were recorded in NACE Rev.2 sections:
L – ‘Real estate activities’ (+0.7%)
D – ‘Electricity, gas, steam and air conditioning supply’ (+2.3%).
In the EU, in the first quarter of 2024 compared with the same quarter of the previous year, the economic activity (NACE Rev. 2 sections) that recorded the highest increases in the non-wage component were:
I – ‘Accommodation and food service activities’ (+7.1%)
R – ‘Arts, entertainment and recreation’ (+7.0%)
The lowest annual increases were recorded in NACE Rev.2 sections:
L – ‘Real estate activities’ (+1.7%)
Q – ‘Human health and social work activities’ (+1.9%).
Hourly wage costs across countries
In the first quarter of 2024 compared with the same quarter of the previous year, the highest increases in hourly wage costs for the whole economy were recorded in Romania (+16.4%), Bulgaria (+15.8%), Croatia (+15.3%), Poland (+14.1%) and Hungary (+13.7%). Two more EU Member States recorded an increase above 10%, namely: Latvia (+12.7%) and Lithuania (+11.1%).
Tables
Nominal hourly labour costs of whole economy (NACE Rev. 2 sections B to S) % change compared with same quarter of previous year - calendar adjusted | |||||||||
---|---|---|---|---|---|---|---|---|---|
Q1 2023 | Q4 2023 | Q1 2024 | |||||||
TOTAL | WAGES | OTHER | TOTAL | WAGES | OTHER | TOTAL | WAGES | OTHER | |
Euro area | 5.2 | 4.9 | 6.4 | 3.4 | 3.2 | 4.1 | 5.1 | 5.3 | 4.5 |
EU | 5.4 | 5.2 | 6.2 | 4.1 | 3.9 | 4.5 | 5.5 | 5.8 | 4.8 |
Belgium | 9.6 | 10.1 | 8.3 | 6.9 | 7.0 | 6.7 | 2.3 | 2.2 | 2.3 |
Bulgaria | 15.3 | 15.8 | 12.5 | 11.9 | 12.2 | 10.4 | 15.8 | 15.8 | 15.9 |
Czechia | 7.4 | 7.3 | 7.5 | 6.0 | 6.0 | 6.0 | 5.9 | 5.8 | 6.0 |
Denmark | 2.9 | 2.9 | 3.3 | 2.0 | 1.9 | 2.5 | 2.5 | 2.5 | 2.7 |
Germany | 6.1 | 5.3 | 8.5 | 2.3 | 2.1 | 2.9 | 5.9 | 6.3 | 4.4 |
Estonia | 11.7 | 12.0 | 11.1 | 10.8 | 10.9 | 10.7 | 7.4 | 7.5 | 7.1 |
Ireland | 10.6 | 4.2 | 67.1 | 8.1 | 2.6 | 48.3 | 5.6 | 4.8 | 10.2 |
Greece | 6.1 | 6.4 | 5.0 | 6.5 | 6.5 | 6.4 | 9.0 | 7.9 | 12.6 |
Spain | 4.6 | 4.4 | 5.2 | 5.4 | 4.4 | 8.5 | 4.7 | 4.5 | 5.3 |
France | 4.3 | 4.5 | 4.0 | 2.9 | 2.7 | 3.4 | 2.7 | 2.6 | 2.9 |
Croatia | 11.4 | 11.4 | 11.7 | 15.6 | 15.6 | 15.8 | 15.2 | 15.3 | 14.9 |
Italy | 1.8 | 1.5 | 2.8 | 0.0 | 0.0 | -0.2 | 3.1 | 3.3 | 2.6 |
Cyprus | 6.0 | 6.2 | 5.3 | 4.9 | 5.1 | 4.2 | 4.9 | 4.5 | 6.5 |
Latvia | 6.3 | 6.5 | 5.4 | 10.9 | 11.1 | 10.5 | 13.6 | 12.7 | 16.9 |
Lithuania | 13.6 | 13.2 | 22.3 | 11.2 | 11.2 | 11.2 | 10.9 | 11.1 | 7.7 |
Luxembourg | 4.1 | 4.0 | 5.3 | 8.2 | 8.1 | 8.9 | 5.3 | 5.4 | 4.5 |
Hungary | 9.6 | 9.7 | 8.5 | 16.2 | 16.4 | 15.2 | 13.7 | 13.7 | 14.1 |
Malta | 8.5 | 4.5 | :c | 3.2 | 3.3 | 2.2 | 4.2 | 5.5 | :c |
Netherlands | 5.3 | 5.2 | 5.7 | 5.4 | 5.7 | 4.3 | 7.8 | 7.6 | 8.2 |
Austria | 5.2 | 5.5 | 4.2 | 8.0 | 8.0 | 7.8 | 9.8 | 9.8 | 9.9 |
Poland | 10.8 | 10.8 | 11.0 | 13.1 | 13.1 | 13.1 | 14.1 | 14.1 | 14.0 |
Portugal | 6.7 | 6.4 | 7.8 | 6.3 | 6.0 | 7.4 | 6.2 | 6.3 | 6.1 |
Romania | 14.4 | 14.4 | 14.0 | 16.8 | 16.9 | 16.7 | 16.4 | 16.4 | 16.5 |
Slovenia | 7.2 | 7.4 | 6.3 | 11.8 | 12.5 | 7.7 | 9.3 | 9.6 | 8.2 |
Slovakia | 7.5 | 7.7 | 7.2 | 9.0 | 9.6 | 7.1 | 11.2 | 9.8 | 15.5 |
Finland | -0.2 | -0.4 | 0.6 | 4.2 | 4.1 | 4.9 | 3.4 | 4.1 | 0.2 |
Sweden | 2.5 | 3.4 | 0.8 | 4.6 | 4.4 | 5.1 | 4.0 | 4.1 | 3.7 |
Norway | 3.7 | 3.4 | 5.4 | 8.9 | 5.1 | 31.2 | 4.8 | 4.7 | 4.7 |
Iceland | 8.3 | 8.2 | 8.6 | 8.6 | 8.4 | 9.3 | 10.2 | 10.2 | 10.3 |
Labour cost data are subject to revision, in particular for the latest quarters, when new source data become available. : not available c confidential TOTAL = total labour costs WAGES = wage and salary costs OTHER = non-wage costs Source dataset: lc_lci_r2_q |
Nominal hourly labour costs of business economy (NACE Rev. 2 sections B to N) % change compared with same quarter of previous year - calendar adjusted | |||||||||
---|---|---|---|---|---|---|---|---|---|
Q1 2023 | Q4 2023 | Q1 2024 | |||||||
TOTAL | WAGES | OTHER | TOTAL | WAGES | OTHER | TOTAL | WAGES | OTHER | |
Euro area | 5.7 | 5.3 | 6.9 | 4.1 | 3.8 | 5.3 | 5.0 | 5.0 | 4.9 |
EU | 6.0 | 5.8 | 6.6 | 4.7 | 4.5 | 5.5 | 5.5 | 5.6 | 5.3 |
Belgium | 9.7 | 10.3 | 8.2 | 6.9 | 6.9 | 6.8 | 2.3 | 2.3 | 2.3 |
Bulgaria | 16.7 | 17.2 | 13.7 | 11.2 | 11.6 | 9.1 | 15.8 | 15.7 | 16.1 |
Czechia | 8.1 | 8.0 | 8.2 | 6.8 | 6.8 | 6.9 | 6.6 | 6.5 | 6.8 |
Denmark | 3.1 | 3.1 | 3.0 | 2.3 | 2.2 | 2.8 | 2.8 | 2.8 | 3.1 |
Germany | 6.9 | 6.4 | 8.7 | 2.5 | 2.3 | 3.4 | 5.9 | 6.1 | 5.4 |
Estonia | 11.0 | 11.0 | 11.1 | 8.4 | 8.6 | 8.0 | 7.3 | 7.5 | 6.7 |
Ireland | 14.3 | 3.8 | 98.9 | 14.6 | 4.8 | 77.6 | 6.4 | 5.4 | 10.5 |
Greece | 9.7 | 10.0 | 8.7 | 8.5 | 8.0 | 10.4 | 11.8 | 10.0 | 18.9 |
Spain | 4.9 | 4.7 | 5.5 | 6.5 | 5.7 | 9.0 | 5.0 | 4.8 | 5.6 |
France | 4.0 | 4.3 | 3.2 | 3.1 | 2.9 | 3.7 | 3.0 | 2.8 | 3.3 |
Croatia | 11.6 | 11.6 | 12.0 | 14.5 | 14.4 | 15.0 | 12.2 | 12.3 | 12.1 |
Italy | 1.7 | 1.2 | 3.0 | 2.3 | 2.2 | 2.7 | 1.6 | 1.7 | 1.2 |
Cyprus | 5.7 | 5.7 | 5.8 | 4.4 | 4.4 | 4.4 | 5.3 | 4.8 | 7.4 |
Latvia | 6.2 | 6.3 | 5.5 | 10.7 | 10.8 | 10.1 | 13.1 | 12.9 | 14.1 |
Lithuania | 14.0 | 13.7 | 19.8 | 11.3 | 11.3 | 11.0 | 10.3 | 10.4 | 9.3 |
Luxembourg | 3.8 | 3.6 | 5.1 | 7.5 | 7.4 | 8.7 | 4.9 | 5.0 | 4.2 |
Hungary | 17.0 | 17.4 | 14.2 | 15.4 | 15.5 | 14.5 | 13.5 | 13.5 | 13.4 |
Malta | 12.8 | 6.7 | :c | 4.4 | 4.4 | 5.8 | 4.6 | 4.7 | 2.8 |
Netherlands | 6.1 | 5.4 | 9.0 | 5.5 | 5.5 | 5.7 | 7.2 | 6.9 | 8.6 |
Austria | 5.1 | 5.4 | 4.3 | 8.5 | 8.6 | 8.1 | 10.2 | 9.9 | 11.1 |
Poland | 10.7 | 10.6 | 10.9 | 12.8 | 12.8 | 12.9 | 13.2 | 13.2 | 13.2 |
Portugal | 6.0 | 5.7 | 7.0 | 6.3 | 6.1 | 7.2 | 4.6 | 4.6 | 4.6 |
Romania | 16.5 | 16.5 | 16.2 | 17.3 | 17.4 | 17.3 | 15.9 | 15.9 | 16.1 |
Slovenia | 8.1 | 8.1 | 7.8 | 12.6 | 13.3 | 8.5 | 9.5 | 9.6 | 8.4 |
Slovakia | 7.1 | 7.3 | 6.8 | 7.2 | 8.1 | 4.6 | 11.0 | 9.3 | 16.1 |
Finland | 0.4 | 0.2 | 1.0 | 5.1 | 5.0 | 5.7 | 2.3 | 2.9 | -0.6 |
Sweden | 2.2 | 4.0 | -1.6 | 4.0 | 4.8 | 2.2 | 5.1 | 4.5 | 6.2 |
Norway | 3.7 | 3.3 | 5.9 | 8.5 | 3.8 | 35.4 | 5.4 | 5.3 | 5.6 |
Iceland | 9.3 | 9.3 | 9.1 | 8.6 | 8.6 | 8.7 | 10.0 | 9.9 | 10.1 |
Labour cost data are subject to revision, in particular for the latest quarters, when new source data become available. TOTAL = total labour costs WAGES = wage and salary costs OTHER = non-wage costs Source dataset: lc_lci_r2_q |
Nominal hourly labour costs of mainly non-business economy (NACE Rev. 2 sections O to S) % change compared with same quarter of previous year - calendar adjusted | |||||||||
---|---|---|---|---|---|---|---|---|---|
Q1 2023 | Q4 2023 | Q1 2024 | |||||||
TOTAL | WAGES | OTHER | TOTAL | WAGES | OTHER | TOTAL | WAGES | OTHER | |
Euro area | 4.2 | 3.8 | 5.4 | 2.0 | 2.1 | 1.7 | 5.3 | 5.8 | 3.8 |
EU | 4.3 | 3.8 | 5.4 | 2.7 | 2.8 | 2.5 | 5.6 | 6.2 | 3.8 |
Belgium | 9.5 | 9.7 | 8.6 | 7.1 | 7.2 | 6.8 | 2.2 | 2.2 | 2.3 |
Bulgaria | 10.8 | 11.1 | 9.3 | 13.9 | 13.9 | 13.6 | 16.3 | 16.5 | 15.6 |
Czechia | 5.7 | 5.8 | 5.5 | 3.8 | 3.8 | 3.8 | 4.1 | 4.1 | 4.1 |
Denmark | 2.6 | 2.4 | 4.0 | 1.5 | 1.4 | 2.0 | 2.0 | 2.0 | 1.9 |
Germany | 4.2 | 2.7 | 8.1 | 1.7 | 1.6 | 1.9 | 5.7 | 6.9 | 2.7 |
Estonia | 13.5 | 14.4 | 11.0 | 17.1 | 16.8 | 17.7 | 7.7 | 7.5 | 8.5 |
Ireland | 2.4 | 4.9 | :c | -4.8 | -1.5 | :c | 4.2 | 3.6 | :c |
Greece | 0.6 | 0.8 | -0.2 | 2.9 | 3.4 | 1.4 | 4.3 | 4.1 | 4.8 |
Spain | 3.9 | 3.7 | 4.5 | 3.2 | 1.9 | 7.3 | 4.0 | 3.8 | 4.6 |
France | 5.0 | 4.7 | 5.6 | 2.3 | 2.1 | 2.8 | 2.0 | 2.0 | 2.0 |
Croatia | 10.8 | 10.7 | 10.9 | 17.8 | 17.8 | 17.5 | 21.9 | 22.1 | 20.8 |
Italy | 2.2 | 2.1 | 2.5 | -4.2 | -4.0 | -4.8 | 6.1 | 6.4 | 5.2 |
Cyprus | 6.7 | 7.5 | 4.4 | 6.1 | 6.9 | 3.8 | 4.2 | 3.8 | 5.3 |
Latvia | 7.1 | 7.4 | 6.0 | 11.6 | 11.7 | 11.3 | 14.4 | 12.0 | 23.7 |
Lithuania | 12.3 | 11.7 | 29.6 | 11.0 | 11.0 | 11.6 | 12.5 | 12.9 | 3.2 |
Luxembourg | 5.3 | 5.2 | 5.6 | 9.8 | 9.8 | 9.5 | 6.7 | 6.8 | 5.2 |
Hungary | -5.7 | -6.0 | -3.3 | 18.1 | 18.4 | 16.5 | 14.3 | 14.1 | 15.9 |
Malta | 1.2 | 0.5 | 8.4 | 1.1 | 1.4 | -1.4 | 3.4 | 7.1 | :c |
Netherlands | 3.4 | 4.5 | 0.4 | 5.3 | 6.3 | 2.3 | 9.1 | 9.4 | 7.8 |
Austria | 5.4 | 5.9 | 3.8 | 6.5 | 6.4 | 6.8 | 9.0 | 9.7 | 6.7 |
Poland | 11.2 | 11.2 | 11.3 | 14.0 | 14.0 | 13.9 | 16.4 | 16.5 | 16.2 |
Portugal | 8.3 | 7.9 | 10.1 | 6.2 | 5.9 | 7.7 | 9.3 | 9.3 | 9.2 |
Romania | 8.1 | 8.2 | 7.5 | 15.2 | 15.3 | 14.9 | 18.0 | 18.0 | 17.6 |
Slovenia | 5.2 | 5.6 | 3.0 | 9.4 | 10.1 | 5.3 | 9.0 | 9.3 | 7.4 |
Slovakia | 8.4 | 8.6 | 8.1 | 12.9 | 12.9 | 12.9 | 11.7 | 10.8 | 14.4 |
Finland | -1.5 | -1.7 | -0.5 | 2.7 | 2.5 | 3.6 | 5.5 | 6.3 | 1.8 |
Sweden | 3.1 | 2.1 | 5.3 | 5.8 | 3.7 | 10.4 | 1.9 | 3.3 | -0.8 |
Norway | 3.4 | 3.3 | 4.1 | 9.7 | 7.2 | 23.8 | 3.6 | 3.6 | 3.3 |
Iceland | 6.6 | 6.2 | 7.8 | 8.6 | 8.1 | 10.0 | 10.5 | 10.5 | 10.5 |
Labour cost data are subject to revision, in particular for the latest quarters, when new source data become available. : not available c confidential TOTAL = total labour costs WAGES = wage and salary costs OTHER = non-wage costs Source dataset: lc_lci_r2_q Nominal hourly labour costs by main economic activity branches for the business economy |
Nominal hourly labour costs of Industry (NACE Rev. 2 sections B to E) % change compared with same quarter of previous year - calendar adjusted | |||||||||
---|---|---|---|---|---|---|---|---|---|
Q1 2023 | Q4 2023 | Q1 2024 | |||||||
TOTAL | WAGES | OTHER | TOTAL | WAGES | OTHER | TOTAL | WAGES | OTHER | |
Euro area | 5.2 | 5.1 | 5.4 | 4.2 | 4.0 | 4.6 | 4.8 | 4.9 | 4.5 |
EU | 5.7 | 5.8 | 5.4 | 4.9 | 4.9 | 4.9 | 5.5 | 5.7 | 5.0 |
Belgium | 9.2 | 9.8 | 7.9 | 5.5 | 5.6 | 5.5 | 3.4 | 3.4 | 3.4 |
Bulgaria | 18.6 | 19.6 | 13.7 | 10.9 | 11.3 | 9.1 | 13.9 | 14.0 | 13.6 |
Czechia | 8.6 | 8.5 | 9.1 | 6.1 | 6.0 | 6.2 | 6.8 | 6.8 | 6.6 |
Denmark | 3.8 | 3.9 | 2.8 | 1.1 | 0.7 | 3.1 | 2.1 | 2.0 | 2.3 |
Germany | 6.2 | 6.1 | 6.7 | 3.3 | 3.3 | 3.6 | 5.0 | 5.3 | 4.0 |
Estonia | 8.2 | 8.3 | 8.1 | 3.9 | 3.7 | 4.4 | 7.9 | 8.0 | 7.6 |
Ireland | 10.0 | 5.4 | 37.3 | 7.2 | 4.6 | 20.9 | 5.7 | 5.5 | 6.4 |
Greece | 3.1 | 3.1 | 2.9 | 5.1 | 4.6 | 7.3 | 7.3 | 6.2 | 11.5 |
Spain | 5.3 | 5.0 | 6.0 | 5.5 | 5.0 | 6.9 | 4.6 | 4.2 | 5.8 |
France | 4.1 | 4.5 | 3.2 | 3.5 | 3.1 | 4.4 | 3.2 | 3.0 | 3.8 |
Croatia | 9.4 | 9.3 | 9.8 | 14.3 | 14.2 | 15.0 | 13.6 | 13.5 | 13.7 |
Italy | 1.8 | 1.6 | 2.5 | 2.8 | 2.9 | 2.6 | 3.4 | 3.5 | 3.0 |
Cyprus | 5.5 | 5.5 | 5.6 | 5.1 | 5.1 | 5.4 | 5.5 | 5.1 | 7.4 |
Latvia | 6.6 | 7.0 | 5.3 | 9.7 | 9.9 | 8.8 | 12.3 | 12.2 | 12.7 |
Lithuania | 11.8 | 11.2 | :c | 10.8 | 10.9 | :c | 11.1 | 11.4 | :c |
Luxembourg | 2.4 | 2.3 | 3.7 | 8.8 | 8.7 | 9.7 | 5.4 | 5.7 | 2.9 |
Hungary | 20.1 | 20.7 | 16.2 | 14.7 | 14.9 | 13.8 | 13.2 | 13.1 | 13.7 |
Malta | 14.3 | 8.3 | :c | 4.5 | 4.8 | 0.6 | 7.1 | 7.3 | 3.2 |
Netherlands | 4.6 | 4.7 | 4.4 | 6.4 | 6.2 | 7.2 | :c | :c | :c |
Austria | 4.9 | 5.0 | 4.6 | 7.5 | 7.2 | 8.4 | 7.9 | 7.5 | 9.3 |
Poland | 10.1 | 10.1 | 10.1 | 13.6 | 13.6 | 13.8 | 13.5 | 13.5 | 13.5 |
Portugal | 7.1 | 6.9 | 7.7 | 6.3 | 6.1 | 6.9 | 4.8 | 4.8 | 4.7 |
Romania | 16.9 | 16.9 | 16.5 | 16.6 | 16.6 | 16.6 | 14.4 | 14.4 | 14.2 |
Slovenia | 7.7 | 7.5 | 8.5 | 13.3 | 14.5 | 6.6 | 8.2 | 9.0 | 3.9 |
Slovakia | 6.3 | 6.9 | 4.8 | 6.9 | 7.9 | 4.2 | 12.0 | 10.8 | 15.6 |
Finland | 0.9 | 0.7 | 1.5 | 6.4 | 6.2 | 7.3 | 1.3 | 1.7 | -0.6 |
Sweden | 2.1 | 3.8 | -1.7 | 3.4 | 4.2 | 1.6 | 5.1 | 4.7 | 6.1 |
Norway | 3.6 | 2.6 | 9.1 | 9.6 | 3.7 | 43.8 | 4.5 | 4.8 | 2.1 |
Iceland | 8.8 | 9.0 | 8.3 | 9.7 | 9.9 | 8.6 | 13.5 | 13.6 | 13.5 |
Labour cost data are subject to revision, in particular for the latest quarters, when new source data become available. : not available c confidential TOTAL = total labour costs WAGES = wage and salary costs OTHER = non-wage costs Source dataset: lc_lci_r2_q |
Nominal hourly labour costs of Construction (NACE Rev. 2 section F) % change compared with same quarter of previous year - calendar adjusted | |||||||||
---|---|---|---|---|---|---|---|---|---|
Q1 2023 | Q4 2023 | Q1 2024 | |||||||
TOTAL | WAGES | OTHER | TOTAL | WAGES | OTHER | TOTAL | WAGES | OTHER | |
Euro area | 5.4 | 4.4 | 8.6 | 4.9 | 3.5 | 9.3 | 5.2 | 5.4 | 4.5 |
EU | 5.6 | 4.8 | 7.9 | 5.5 | 4.4 | 9.0 | 5.8 | 6.1 | 5.0 |
Belgium | 10.0 | 10.7 | 8.8 | 7.1 | 7.1 | 7.1 | 2.3 | 2.3 | 2.3 |
Bulgaria | 14.2 | 14.2 | 13.9 | 19.4 | 20.4 | 14.1 | 19.3 | 20.6 | 12.7 |
Czechia | 9.3 | 9.3 | 9.3 | 8.1 | 8.1 | 8.2 | 5.9 | 5.9 | 6.0 |
Denmark | 3.5 | 3.5 | 3.3 | 2.9 | 2.8 | 3.2 | 3.3 | 3.4 | 2.7 |
Germany | 3.7 | 3.0 | 5.7 | 2.4 | 2.2 | 3.3 | 6.3 | 7.0 | 4.0 |
Estonia | 5.2 | 5.3 | 5.0 | 4.4 | 4.3 | 4.5 | 6.2 | 6.5 | 5.4 |
Ireland | :c | 3.3 | :c | :c | 4.5 | :c | :c | 7.1 | :c |
Greece | 12.5 | 9.8 | 22.0 | 7.0 | 7.3 | 6.5 | 13.9 | 12.2 | 19.5 |
Spain | 4.2 | 3.8 | 5.2 | 6.3 | 5.9 | 7.4 | 3.4 | 2.5 | 5.3 |
France | 4.3 | 5.0 | 2.4 | 2.9 | 2.9 | 3.0 | 2.3 | 2.4 | 2.2 |
Croatia | 13.6 | 13.6 | 13.4 | 17.1 | 17.2 | 16.3 | 11.6 | 12.0 | 8.8 |
Italy | 4.6 | 4.5 | 4.9 | 2.3 | 1.7 | 3.8 | 4.3 | 4.8 | 2.9 |
Cyprus | 5.6 | 5.6 | 5.7 | 3.6 | 3.6 | 3.7 | 4.5 | 4.0 | 6.7 |
Latvia | -0.6 | -0.1 | -2.6 | 9.7 | 10.2 | 8.0 | 14.7 | 14.7 | 14.7 |
Lithuania | 15.9 | 16.6 | 0.3 | 15.9 | 16.2 | 7.5 | 15.5 | 14.5 | 40.8 |
Luxembourg | 4.9 | 4.9 | 5.3 | 9.0 | 8.8 | 10.1 | 6.5 | 6.4 | 7.1 |
Hungary | 15.4 | 15.6 | 13.7 | 16.8 | 16.8 | 17.1 | 17.0 | 16.9 | 17.6 |
Malta | 8.5 | 8.4 | 9.8 | 0.7 | 1.0 | -3.0 | 4.5 | 5.0 | -4.0 |
Netherlands | 5.3 | 6.2 | 2.3 | 1.3 | 2.1 | -1.7 | :c | :c | :c |
Austria | 5.4 | 5.3 | 6.0 | 8.8 | 8.1 | 11.2 | 10.0 | 8.7 | 14.6 |
Poland | 4.2 | 4.2 | 4.3 | 11.6 | 11.6 | 11.6 | 16.7 | 16.7 | 16.6 |
Portugal | 7.1 | 5.3 | 13.7 | 4.9 | 3.1 | 11.3 | 4.3 | 4.3 | 4.2 |
Romania | 21.9 | 21.9 | 21.7 | 30.1 | 30.1 | 30.2 | 20.5 | 20.5 | 20.6 |
Slovenia | 8.0 | 8.1 | 7.9 | 12.1 | 12.6 | 9.3 | 10.7 | 10.5 | 11.0 |
Slovakia | 11.0 | 6.8 | 26.4 | 6.5 | 8.5 | 0.7 | 9.0 | 6.7 | 16.1 |
Finland | -3.8 | -3.8 | -3.6 | 3.1 | 3.0 | 3.4 | 6.6 | 7.5 | 2.6 |
Sweden | 2.5 | 4.1 | -1.2 | 4.6 | 4.5 | 4.8 | 5.6 | 5.0 | 7.2 |
Norway | 5.6 | 5.6 | 5.8 | 6.0 | 3.2 | 22.1 | 5.8 | 5.6 | 6.9 |
Iceland | 9.8 | 9.8 | 9.7 | 8.2 | 8.1 | 8.6 | 11.0 | 11.1 | 10.8 |
Labour cost data are subject to revision, in particular for the latest quarters, when new source data become available. c confidential : not available TOTAL = total labour costs WAGES = wage and salary costs OTHER = non-wage costs Source dataset: lc_lci_r2_q |
Nominal hourly labour costs of Services (NACE Rev. 2 sections G to N) % change compared with same quarter of previous year - calendar adjusted | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Q1 2023 | Q4 2023 | Q1 2024 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TOTAL | WAGES | OTHER | TOTAL | WAGES | OTHER | TOTAL | WAGES | OTHER | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Euro area | 5.9 | 5.5 | 7.4 | 4.1 | 3.7 | 5.2 | 5.0 | 5.0 | 5.1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EU | 6.1 | 5.8 | 6.9 | 4.6 | 4.3 | 5.2 | 5.5 | 5.5 | 5.4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Belgium | 9.7 | 10.3 | 8.2 | 7.5 | 7.5 | 7.5 | 1.8 | 1.8 | 1.8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bulgaria | 16.0 | 16.4 | 13.8 | 10.7 | 11.1 | 8.6 | 16.3 | 16.1 | 17.8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Czechia | 7.4 | 7.5 | 7.2 | 7.3 | 7.3 | 7.4 | 6.5 | 6.3 | 7.0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Denmark | 2.9 | 2.8 | 3.0 | 2.7 | 2.7 | 2.7 | 3.1 | 3.0 | 3.4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Germany | 7.8 | 7.1 | 10.6 | 2.1 | 1.7 | 3.3 | 6.4 | 6.4 | 6.5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Estonia | 13.2 | 13.1 | 13.5 | 11.2 | 11.6 | 10.3 | 7.2 | 7.5 | 6.5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ireland | 11.5 | 3.5 | 85.7 | 10.0 | 4.8 | 44.0 | 5.9 | 5.2 | 10.0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Greece | 11.7 | 12.2 | 10.0 | 9.6 | 9.1 | 11.6 | 13.1 | 11.1 | 21.2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Spain | 4.8 | 4.6 | 5.4 | 6.9 | 5.9 | 10.0 | 5.3 | 5.1 | 5.6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
France | 3.9 | 4.2 | 3.3 | 3.1 | 2.9 | 3.6 | 2.9 | 2.8 | 3.3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Croatia | 12.4 | 12.4 | 12.8 | 14.2 | 14.1 | 14.8 | 11.8 | 11.7 | 11.9 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Italy | 1.1 | 0.5 | 3.0 | 2.1 | 1.9 | 2.8 | 0.1 | 0.2 | -0.2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Cyprus | 5.7 | 5.7 | 5.8 | 4.3 | 4.3 | 4.3 | 5.3 | 4.9 | 7.5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Latvia | 7.0 | 7.1 | 6.8 | 11.2 | 11.3 | 10.9 | 13.1 | 12.8 | 14.5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lithuania | 14.6 | 14.4 | 19.6 | 10.9 | 10.8 | 12.2 | 9.3 | 9.3 | 7.4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Luxembourg | 3.7 | 3.6 | 5.3 | 7.2 | 7.1 | 8.4 | 4.6 | 4.7 | 4.0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hungary | 15.2 | 15.5 | 13.0 | 15.7 | 15.8 | 14.8 | 13.3 | 13.4 | 12.8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Malta | 12.8 | 6.2 | :c | 4.6 | 4.6 | 8.0 | 4.1 | 4.2 | 3.3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Netherlands | 6.6 | 5.5 | 11.1 | 5.7 | 5.6 | 6.1 | :c | :c | :c | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Austria | 5.2 | 5.6 | 3.9 | 9.0 | 9.5 | 7.5 | 11.5 | 11.5 | 11.5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Poland | 11.8 | 11.7 | 12.1 | 12.3 | 12.3 | 12.4 | 12.6 | 12.6 | 12.6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Portugal | 5.3 | 5.2 | 5.7 | 6.5 | 6.4 | 6.8 | 4.5 | 4.5 | 4.5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Romania | 15.5 | 15.5 | 15.3 | 15.8 | 15.8 | 16.1 | 15.9 | 15.9 | 16.6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Slovenia | 8.4 | 8.6 | 7.3 | 12.2 | 12.6 | 9.9 | 10.2 | 10.0 | 11.6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Slovakia | 7.4 | 7.6 | 6.8 | 7.6 | 8.3 | 5.4 | 10.5 | 8.5 | 16.4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Finland | 0.8 | 0.7 | 1.6 | 4.8 | 4.7 | 5.2 | 2.2 | 2.9 | -1.1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sweden | 2.2 | 4.1 | -1.7 | 4.1 | 5.1 | 1.9 | 4.9 | 4.4 | 6.2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Norway | 3.3 | 3.1 | 4.7 | 8.6 | 4.0 | 35.4 | 5.7 | 5.4 | 7.0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Iceland | 9.4 | 9.4 | 9.3 | 8.2 | 8.1 | 8.6 | 8.6 | 8.5 | 8.8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Labour cost data are subject to revision, in particular for the latest quarters, when new source data become available. c confidential : not available TOTAL = total labour costs WAGES = wage and salary costs OTHER = non-wage costs Source dataset: lc_lci_r2_q
|
Notes for users
Revisions and timetable
The Labour Cost Index data are subject to revision, in particular for the latest quarters, when new source data become available. The original data, before any subsequent revision, are also available here.
Compared with the News Release of 19 March 2024, the annual growth rate of the hourly labour costs, for the total economy in the fourth quarter of 2023 remained unchanged (+3.4%) for the euro area. It was revised from +4.0% to +4.1% for the EU.
Eurostat has started releasing early estimates for the hourly labour costs of the euro area and of the EU, around 50 days after the reference quarter. Early estimates for the first quarter of 2024 have been released on 21 May 2024 and early estimates for the second quarter are scheduled on 21 August 2024.
In the case of Ireland, the annual growth of hourly wages was impacted downwards by the phasing out of the Employment Wage Subsidy Scheme (EWSS) introduced by government in March 2020 to support wages during the COVID-19 pandemic. It enabled employees, whose employers' business activities were adversely affected by the pandemic, to receive supports directly from their employer through the payroll system.
Methods and definitions
The Labour Cost Index is a short-term indicator showing the development of hourly labour costs incurred by employers, in nominal terms, that is without adjusting for price developments. It is calculated dividing the labour cost in national currency by the number of hours worked. Therefore, the development of variables, labour costs and hours worked, affect the evolution of the index (base year = 2020).
The quarterly changes in hourly employers’ costs are measured for total labour costs and its main components: wages and salaries; and non-wage costs (labour costs other than wages and salaries). Total labour costs (TOT) cover wage and non-wage costs less subsidies. They do not include vocational training costs or other expenditures such as recruitment costs, spending on working clothes, etc.
Wage and salary costs (WAG) include direct remuneration, bonuses, and allowances paid by an employer in cash or in kind to an employee in return for work done, payments to employees saving schemes, payments for days not worked and remuneration in kind such as food, drink, fuel, company cars, etc.
Labour costs other than wages and salaries (OTH - non-wage costs) include the employers’ social contributions plus employment taxes regarded as labour costs less subsidies intended to refund part or the entire employer’s cost of direct remuneration.
Eurostat publishes Labour Cost Index data for NACE Rev. 2 sections B to S. The aggregate is referred to as "Whole economy" for the sake of simplification, although sections A: ‘Agriculture, forestry and fishing’; T: ‘Activities of households as employers; undifferentiated goods and services producing activities of households for own use’ and U: ‘Activities of extraterritorial organisations and bodies’ are excluded. Section N: ‘Administrative and support service activities’ includes the activities of temporary employment agencies.
Geographical information
The euro area (EA20) includes Belgium, Germany, Estonia, Ireland, Greece, Spain, France, Croatia, Italy, Cyprus, Latvia, Lithuania, Luxembourg, Malta, the Netherlands, Austria, Portugal, Slovenia, Slovakia and Finland.
The European Union (EU27) includes Belgium, Bulgaria, Czechia, Denmark, Germany, Estonia, Ireland, Greece, Spain, France, Croatia, Italy, Cyprus, Latvia, Lithuania, Luxembourg, Hungary, Malta, the Netherlands, Austria, Poland, Portugal, Romania, Slovenia, Slovakia, Finland and Sweden.
For more information
Website section on labour costs
Database section on labour costs
Statistics Explained article on labour cost index
Euro indicators dashboard
Release calendar for Euro indicators
European Statistics Code of Practice
Get in touch
Media requests
Eurostat Media Support
Phone: (+352) 4301 33 408
E-mail: eurostat-mediasupport@ec.europa.eu
Further information on data
Ines KOLAKOVIC
Phone: (+352) 4301 32 179
E-mail: estat-labour-cost-indices@ec.europa.eu
Share component will be rendered here.
'; /** Retrieve the order from the tooltip option */ var sortOrder = option.tooltip.order; /** Sort the 'params' array based on the 'sortOrder' parameter. */ switch (sortOrder) { /** Sort by series name in ascending order. */ case 'seriesAsc': params = params.sort((a, b) => a.seriesName.localeCompare(b.seriesName)); break; /** Sort by series name in descending order. */ case 'seriesDesc': params = params.sort((a, b) => b.seriesName.localeCompare(a.seriesName)); break; /** Sort by numerical value in ascending order. */ case 'valueAsc': params = params.sort((a, b) => parseFloat(a.value) - parseFloat(b.value)); break; /** Sort by numerical value in descending order. */ case 'valueDesc': params = params.sort((a, b) => parseFloat(b.value) - parseFloat(a.value)); break; /** Reverse the current order. */ case 'reverse': params.reverse(); break; default: break; } /** Iterate over each series in the tooltip parameters */ for (var i = 0; i < params.length; i++) { /** Retrieve the name and value of the current series */ var seriesName = params[i].seriesName; var value = params[i].value; /** Replace every specific apostrphe by simple one. */ seriesName = seriesName.replaceAll("’", "'"); /** Convert the numeric value to its string representation. */ var strValue = String(value); /** Retrieve the axis used as value */ var axis = option.yAxis.type === 'value' ? option.yAxis : option.xAxis; /** Initialize the number of decimal places */ var decimals = option.tooltip.decimals; /** Check if decimals configuration is set to default and the value contains decimal places */ if (!decimals && strValue.indexOf('.') > -1) { /** Calculate the number of decimal places */ decimals = strValue.substring(strValue.indexOf('.'), strValue.length - 1).length; } else { /** If there are no decimal places, format the value with 1 decimal place */ decimals = decimals ? decimals : 1; /** Convert the value to a fixed-point notation string with a specified number of decimal places. */ value = Number(value).toFixed(decimals); } /** Convert -0 value to 0 with the specified or calculated number of decimal places.*/ if (Number(value) == -0) { value = (Number(value) + 0).toFixed(decimals); } /** Extract the unit from within the axis label */ var unit = axis.axisLabel.unit ? axis.axisLabel.unit : ''; /** Format the value using the appropriate number of decimal places */ value = isNaN(value) ? 'N/A' : Number(value).toLocaleString(option.lang ? option.lang : 'en', { minimumFractionDigits: decimals }) + unit; /** Retrieve the color of the current series */ const color = params[i].color; /** * Add the series name and value to the tooltip content * Use a circle icon with the series color */ tooltipContent += '
' + '' + '' + '' + seriesName + '' + '' + '' + value + '' + '
'; } /** Close the tooltip content container */ tooltipContent += '
'; /** Return the formatted tooltip content */ return tooltipContent; }}/* * This content is licensed according to the W3C Software License at * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document * * File: sortable-table.js * * Desc: Adds sorting to a HTML data table that implements ARIA Authoring Practices */'use strict';class SortableTable { constructor(tableNode) { this.tableNode = tableNode; this.columnHeaders = tableNode.querySelectorAll('thead th.sortable'); this.sortColumns = []; for (var i = 0; i < this.columnHeaders.length; i++) { var ch = this.columnHeaders[i]; var buttonNode = ch.querySelector('button'); if (buttonNode) { this.sortColumns.push(i); // buttonNode.setAttribute('data-column-index', i); // buttonNode.addEventListener('click', this.handleClick.bind(this)); ch.setAttribute('data-column-index', i); ch.addEventListener('click', this.handleClick.bind(this)); } } this.optionCheckbox = document.querySelector( 'input[type="checkbox"][value="show-unsorted-icon"]' ); if (this.optionCheckbox) { this.optionCheckbox.addEventListener( 'change', this.handleOptionChange.bind(this) ); if (this.optionCheckbox.checked) { this.tableNode.classList.add('show-unsorted-icon'); } } } setColumnHeaderSort(columnIndex) { if (typeof columnIndex === 'string') { columnIndex = parseInt(columnIndex); } for (var i = 0; i < this.columnHeaders.length; i++) { var ch = this.columnHeaders[i]; var buttonNode = ch.querySelector('button'); if (i === columnIndex) { var value = ch.getAttribute('aria-sort'); if (value === 'ascending') { ch.setAttribute('aria-sort', 'descending'); this.sortColumn( columnIndex, 'descending', ch.classList.contains('num')); } else if (value === 'descending') { ch.removeAttribute('aria-sort'); this.sortColumn( columnIndex, 'initial', true ); } else { ch.setAttribute('aria-sort', 'ascending'); this.sortColumn( columnIndex, 'ascending', ch.classList.contains('num') ); } } else { if (ch.hasAttribute('aria-sort') && buttonNode) { ch.removeAttribute('aria-sort'); } } } } sortColumn(columnIndex, sortValue, isNumber) { function compareValues(a, b) { if (a.value === b.value) return 0; if (sortValue === 'descending') { return isNumber ? b.value - a.value : (a.value > b.value ? -1 : 1); } else { return isNumber ? a.value - b.value : (a.value < b.value ? -1 : 1); } } if (typeof isNumber !== 'boolean') { isNumber = false; } var tbodyNode = this.tableNode.querySelector('tbody'); var rowNodes = []; var dataCells = []; var rowNode = tbodyNode.firstElementChild; var index = 0; while (rowNode) { rowNodes.push(rowNode); var rowCells = rowNode.querySelectorAll('th, td'); var dataCell = rowCells[columnIndex]; var data = {}; data.index = index; if (sortValue !== 'initial') { data.value = dataCell.textContent.toLowerCase().trim(); } else { data.value = rowNode.getAttribute('initial-position').toLowerCase().trim(); } if (isNumber) { data.value = parseFloat(data.value); } dataCells.push(data); rowNode = rowNode.nextElementSibling; index += 1; } dataCells.sort(compareValues); // remove rows while (tbodyNode.firstChild) { tbodyNode.removeChild(tbodyNode.lastChild); } // add sorted rows for (var i = 0; i < dataCells.length; i += 1) { let pos = [dataCells[i].index]; if (sortValue === "initial") { rowNodes[pos].classList.remove("sorted"); } else { rowNodes[pos].classList.add("sorted"); } tbodyNode.appendChild(rowNodes[pos]); } } /* EVENT HANDLERS */ handleClick(event) { var tgt = event.currentTarget; this.setColumnHeaderSort(tgt.getAttribute('data-column-index')); } handleOptionChange(event) { var tgt = event.currentTarget; if (tgt.checked) { this.tableNode.classList.add('show-unsorted-icon'); } else { this.tableNode.classList.remove('show-unsorted-icon'); } }}$(document).ready(function() { load(); });;}());
Subscribe to receive the latest Eurostat Euro indicators releases