Turnover and volume of sales in wholesale and retail trade - quarterly data - sts_trtu_q
Data - Eurostat
Info
Last observation: Quarterly: 2026Q1 (N = 8,119)
First observation: Quarterly: 1991Q1 (N = 345)
Last data update: 23 jul 2026, 23:06. Last compile: 24 jul 2026, 03:58
Structure
France: Retail Turnover vs. Volume of Sales
Value vs. Volume, Retail Trade (G47)
Code
sts_trtu_q %>%
filter(geo == "FR",
nace_r2 == "G47",
s_adj == "SCA",
unit == "I21") %>%
quarter_to_date %>%
ggplot + geom_line(aes(x = date, y = values, color = Indic_bt)) +
theme_minimal() +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
xlab("") + ylab("Retail trade index (2021 = 100)")
Germany: Wholesale vs. Retail Turnover
G46 (Wholesale) vs. G47 (Retail)
Code
sts_trtu_q %>%
filter(geo == "DE",
nace_r2 %in% c("G46", "G47"),
s_adj == "SCA",
unit == "I21",
indic_bt == "NETTUR") %>%
quarter_to_date %>%
ggplot + geom_line(aes(x = date, y = values, color = Nace_r2)) +
theme_minimal() +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.3, 0.85),
legend.title = element_blank()) +
xlab("") + ylab("Net turnover (2021 = 100)")
Latest Quarter: Retail Turnover Growth by Country
Code
latest_q <- sts_trtu_q %>%
filter(geo == "FR",
nace_r2 == "G47",
s_adj == "CA",
unit == "PCH_SM",
indic_bt == "NETTUR",
!is.na(values)) %>%
summarise(m = max(time)) %>%
pull(m)
sts_trtu_q %>%
filter(geo %in% c("FR", "DE", "IT", "ES", "NL", "EU27_2020"),
nace_r2 == "G47",
s_adj == "CA",
unit == "PCH_SM",
indic_bt == "NETTUR",
time == latest_q) %>%
mutate(values = values/100) %>%
select(Geo, values) %>%
arrange(-values) %>%
print_table_conditional()| Geo | values |
|---|---|
| Spain | 0.056 |
| European Union - 27 countries (from 2020) | 0.034 |
| France | 0.033 |
| Italy | 0.025 |
| Germany | 0.022 |
| Netherlands | 0.017 |
Turnover and volume of sales in wholesale and retail trade
France, Germany, Italy
All
Code
sts_trtu_q %>%
filter(nace_r2 == "G47",
unit == "I15",
indic_bt == "NETTUR",
geo %in% c("FR", "DE", "IT"),
s_adj == "SCA") %>%
select(geo, Geo, time, values) %>%
group_by(geo) %>%
mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
quarter_to_date %>%
ggplot() + ylab("Retail trade, except of motor vehicles and motorcycles") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = values, color = Geo)) +
scale_color_manual(values = c("#0055a4", "#000000", "#008c45")) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
add_3flags +
theme(legend.position = "none") +
scale_y_log10(breaks = seq(-60, 300, 10))
2010-
Code
sts_trtu_q %>%
filter(nace_r2 == "G47",
unit == "I15",
indic_bt == "NETTUR",
geo %in% c("FR", "DE", "IT"),
s_adj == "SCA") %>%
select(geo, Geo, time, values) %>%
group_by(geo) %>%
mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
quarter_to_date %>%
filter(date >= as.Date("2010-01-01")) %>%
ggplot() + ylab("Retail trade, except of motor vehicles and motorcycles - Since 2010") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = values, color = Geo)) +
scale_color_manual(values = c("#0055a4", "#000000", "#008c45")) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
add_3flags +
theme(legend.position = "none") +
scale_y_log10(breaks = seq(-60, 300, 10))