Turnover statistics for industry (NACE Rev. 2, B-E) - sbs_turn_ind_r2

Data - Eurostat

Info

Last observation: Annual: 2018 (N = 12,756)

First observation: Annual: 2008 (N = 12,240)

Last data update: 23 jul 2026, 22:58. Last compile: 24 jul 2026, 03:49

Structure

France, Germany, Italy, Spain, Netherlands

Total Industry Turnover (NACE B-E)

Code
sbs_turn_ind_r2 %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         indic_sb == "V18120",
         nace_r2 %in% c("B", "C", "D", "E")) %>%
  group_by(geo, Geo, time) %>%
  summarise(values = sum(values, na.rm = TRUE), .groups = "drop") %>%
  year_to_date %>%

  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(color = ifelse(geo == "NL", color2, color)) %>%
  ggplot + geom_line(aes(x = date, y = values/1000, color = color)) +
  theme_minimal() + scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(2000, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Total industry turnover, NACE B-E (Bn€)")

France: Industrial, Service, Trading Turnover

Code
sbs_turn_ind_r2 %>%
  filter(geo == "FR",
         nace_r2 %in% c("B", "C", "D", "E")) %>%
  group_by(indic_sb, Indic_sb, time) %>%
  summarise(values = sum(values, na.rm = TRUE), .groups = "drop") %>%
  year_to_date %>%

  mutate(Indic_sb = gsub(" - million euro", "", Indic_sb)) %>%
  ggplot + geom_line(aes(x = date, y = values/1000, color = Indic_sb)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(2000, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Turnover, NACE B-E (Bn€)")

Latest Year: Turnover by NACE Division

Code
latest_yr <- sbs_turn_ind_r2 %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         indic_sb == "V18120",
         nace_r2 %in% c("B", "C", "D", "E"),
         !is.na(values)) %>%
  summarise(m = max(time)) %>%
  pull(m)

sbs_turn_ind_r2 %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         indic_sb == "V18120",
         nace_r2 %in% c("B", "C", "D", "E"),
         time == latest_yr) %>%
  mutate(values = values/1000) %>%
  select(nace_r2, Nace_r2, Geo, values) %>%
  spread(Geo, values) %>%
  print_table_conditional()
nace_r2 Nace_r2 France Germany Italy Netherlands Spain
B Mining and quarrying 3.6430 16.9229 6.5720 9.5160 4.0082
C Manufacturing 770.6758 1841.4944 867.3247 320.5909 516.7678
D D Electricity, gas, steam and air conditioning supply 109.8556 587.5404 50.6673 12.3581 93.4638
E Water supply; sewerage, waste management and remediation activities 36.4398 60.6518 17.6644 4.3337 20.1109

indic_sb

Code
sbs_turn_ind_r2 %>%
  
  group_by(indic_sb, Indic_sb) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
indic_sb Indic_sb Nobs
V18120 Turnover from industrial activities - million euro 12566
V18150 Turnover from service activities - million euro 12566
V18160 Turnover from trading activities of purchase and resale and intermediary activities (agents) - million euro 12566

time

Code
sbs_turn_ind_r2 %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  print_table_conditional
time Nobs
2018 12756
2013 12702
2008 12240