Quarterly non-financial accounts for general government

Data - Eurostat

Info

Last observation: Quarterly: 2026Q1 (N = 15,932)

First observation: Quarterly: 1995Q1 (N = 4,110)

Last data update: 23 jul 2026, 22:51. Last compile: 24 jul 2026, 01:46

Structure

na_item

Revenue & Expenditure, France

Total Revenue vs. Total Expenditure (% of GDP)

Code
gov_10q_ggnfa %>%
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item %in% c("TE", "TR"),
         geo == "FR",
         s_adj == "NSA") %>%
  quarter_to_date() %>%
  mutate(values = values / 100) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Percentage of GDP") +
  geom_line(aes(x = date, y = values, color = Na_item)) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(labels = scales::percent_format(acc = 1)) +
  scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 5), "-01-01")),
               labels = date_format("%Y"))

Interest Expenditure

FR, DE, IT, ES, NL

Code
gov_10q_ggnfa %>%
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "D41PAY",
         geo %in% c("FR", "DE", "IT", "ES", "NL"),
         s_adj == "NSA") %>%
  quarter_to_date() %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values / 100) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Interest expenditure (% of GDP)") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(labels = scales::percent_format(acc = 1)) +
  scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 5), "-01-01")),
               labels = date_format("%Y"))

Latest Quarter, General Government (S13, % of GDP)

Code
latest_q_fiscal <- gov_10q_ggnfa %>%
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "B9",
         s_adj == "NSA",
         !is.na(values)) %>%
  summarise(m = max(time)) %>%
  pull(m)

gov_10q_ggnfa %>%
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item %in% c("TR", "TE", "B9", "D41PAY"),
         geo %in% c("FR", "DE", "IT", "ES", "NL"),
         s_adj == "NSA",
         time == latest_q_fiscal) %>%
  mutate(values = values / 100) %>%
  select(na_item, Na_item, Geo, values) %>%
  spread(Geo, values) %>%
  print_table_conditional()
na_item Na_item France Germany Italy Netherlands Spain
B9 Net lending (+)/net borrowing (-) -0.061 -0.032 -0.078 -0.010 -0.015
D41PAY Interest, expenditure 0.018 0.011 0.035 0.008 0.022
TE Total general government expenditure 0.557 0.493 0.501 0.445 0.425
TR Total general government revenue 0.496 0.461 0.423 0.435 0.409

EA-19, Deficit

Code
gov_10q_ggnfa %>%
  filter(time %in% c("2022Q2", "2022Q1"),
         sector == "S13",
         unit == "PC_GDP",
         na_item == "B9",
         s_adj == "NSA") %>%
  
  select_if(~ n_distinct(.) > 1) %>%
  spread(time, values) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, Geo, geo, everything()) %>%
  arrange(`2022Q2`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Deficit

All

Code
gov_10q_ggnfa %>%
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "B9",
         geo %in% c("FR", "DE", "IT", "ES", "NL"),
         s_adj == "NSA") %>%
  
  quarter_to_date() %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values / 100) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Deficit") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-10, 260, 1),
                     labels = scales::percent_format(acc = 1)) +
  scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 2), "-01-01")),
               labels = date_format("%Y"))

2000-

Code
gov_10q_ggnfa %>%
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "B9",
         geo %in% c("FR", "DE", "IT", "ES", "NL"),
         s_adj == "NSA") %>%
  
  quarter_to_date() %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values / 100) %>%
  filter(date >= as.Date("2000-01-01")) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Deficit") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_5flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 260, 1),
                     labels = scales::percent_format(acc = 1)) +
  scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 2), "-01-01")),
               labels = date_format("%Y"))