Zum Inhalt

StatAgent

von Bernhard Götzendorfer · Team OneShotAndy

November 2025Stichtag 30.11.2025veröffentlicht

Am 30.11.2025 bestanden 389.823 Beschäftigungsverhältnisse, 1.077 weniger als im Oktober 2025.

Beleg
Tabelle
stat.stat_beschaeftigte
Lieferung
November 2025
Regelstand
c3ecc447f8384fea
Lauf
66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
SELECT to_char(zeitraum_bis, 'YYYY-MM') AS monat, sum(wert) AS beschaeftigungsverhaeltnisse
FROM stat.stat_beschaeftigte
WHERE regelsatz = 'v1' AND zeitraum_art = 'Stichtag' AND variable = 'Beschaeftigungsverhaeltnisse'
  AND ((regelstand = 'c3ecc447f8384fea' AND zeitraum_bis BETWEEN '2025-10-01' AND '2025-10-31')
       OR (regelstand = 'c3ecc447f8384fea' AND zeitraum_bis BETWEEN '2025-11-01' AND '2025-11-30'))
GROUP BY 1 ORDER BY 1;

Veröffentlicht von Bernhard Götzendorfer.

9 Prüfungen auffällig.

Fehler in den Daten · 4 Prüfungen

Die Ursache ist bekannt, eine feste Regel behandelt sie.

  • Bei 1.974 Beschäftigungsverhältnissen fehlt die Branche oder das Bundesland. Sie zählen unter „unbekannt“.1.974

    erklärt, Datenproblem

    Was wir tun: Unbekannt (UNB bzw. 0), Zeile zählt.

    Beleg
    Tabelle
    meta.pruefung_treffer
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, p.anzahl, p.umfang, coalesce(p.einstufung, 'nicht-erklaerbar') AS einstufung, p.massnahme, p.anhalten,
           p.details,
           ARRAY(SELECT q.nr FROM meta.rueckfrage q WHERE q.antwort IS NULL
                 AND (q.nr = p.details ->> 'rueckfrage' OR q.regel_name = r.name)) AS offene_rueckfragen
    FROM meta.pruefung_treffer p JOIN meta.regel r ON r.id = p.regel_id
    WHERE p.lauf_id = 113 AND p.regel_id = 181 AND p.ebene = 'satz';
    
    -- Prüfabfrage der Regel, mit der die Anzahl gerechnet wurde:
    -- _bestand: Verhältnisse am Stichtag nach Abschnittswahl (statagent.zaehlung) im Lauf 113
    WITH t AS (SELECT vvh_id, 1 AS gewicht FROM _bestand WHERE korrekturen && '{Q02_leer_unbekannt}'::text[])
    SELECT coalesce(sum(gewicht), 0)::bigint AS n,
           coalesce((SELECT jsonb_agg(v ORDER BY v)
                     FROM (SELECT DISTINCT vvh_id AS v FROM t ORDER BY 1 LIMIT 5) b), '[]'::jsonb) AS beispiele
    FROM t
  • Bei 389 Beschäftigungsverhältnissen steht im Geburtsdatum der Monat 13. Wir nehmen das Geburtsjahr und einen Ersatztag als Geburtstag.389

    erklärt, Datenproblem

    Was wir tun: Geburtstag unbekannt: 1. Juli des Geburtsjahres als Ersatztag, Alter in vollendeten Jahren am Stichtag.

    Beleg
    Tabelle
    meta.pruefung_treffer
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, p.anzahl, p.umfang, coalesce(p.einstufung, 'nicht-erklaerbar') AS einstufung, p.massnahme, p.anhalten,
           p.details,
           ARRAY(SELECT q.nr FROM meta.rueckfrage q WHERE q.antwort IS NULL
                 AND (q.nr = p.details ->> 'rueckfrage' OR q.regel_name = r.name)) AS offene_rueckfragen
    FROM meta.pruefung_treffer p JOIN meta.regel r ON r.id = p.regel_id
    WHERE p.lauf_id = 113 AND p.regel_id = 175 AND p.ebene = 'satz';
    
    -- Prüfabfrage der Regel, mit der die Anzahl gerechnet wurde:
    -- _bestand: Verhältnisse am Stichtag nach Abschnittswahl (statagent.zaehlung) im Lauf 113
    WITH t AS (SELECT vvh_id, 1 AS gewicht FROM _bestand WHERE geburtsdatum_status = 'monat_13')
    SELECT coalesce(sum(gewicht), 0)::bigint AS n,
           coalesce((SELECT jsonb_agg(v ORDER BY v)
                     FROM (SELECT DISTINCT vvh_id AS v FROM t ORDER BY 1 LIMIT 5) b), '[]'::jsonb) AS beispiele
    FROM t
  • 49 Beschäftigungsverhältnisse tragen noch einen alten Branchencode aus ÖNACE 2003. Wir zählen sie zur Herstellung von Waren (Abschnitt C).49

    erklärt, Datenproblem

    Was wir tun: Zugeordnet zu C (Umsteiger ÖNACE 2003 zu 2008)

    Beleg
    Tabelle
    meta.pruefung_treffer
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, p.anzahl, p.umfang, coalesce(p.einstufung, 'nicht-erklaerbar') AS einstufung, p.massnahme, p.anhalten,
           p.details,
           ARRAY(SELECT q.nr FROM meta.rueckfrage q WHERE q.antwort IS NULL
                 AND (q.nr = p.details ->> 'rueckfrage' OR q.regel_name = r.name)) AS offene_rueckfragen
    FROM meta.pruefung_treffer p JOIN meta.regel r ON r.id = p.regel_id
    WHERE p.lauf_id = 113 AND p.regel_id = 182 AND p.ebene = 'satz';
    
    -- Prüfabfrage der Regel, mit der die Anzahl gerechnet wurde:
    -- _bestand: Verhältnisse am Stichtag nach Abschnittswahl (statagent.zaehlung) im Lauf 113
    WITH t AS (SELECT vvh_id, 1 AS gewicht FROM _bestand WHERE korrekturen && '{Q01_oenace_2003_unterabschnitte}'::text[])
    SELECT coalesce(sum(gewicht), 0)::bigint AS n,
           coalesce((SELECT jsonb_agg(v ORDER BY v)
                     FROM (SELECT DISTINCT vvh_id AS v FROM t ORDER BY 1 LIMIT 5) b), '[]'::jsonb) AS beispiele
    FROM t
  • 10 Beschäftigungsverhältnisse haben ein Alter, das nicht stimmen kann. Sie zählen mit dem Alter „unbekannt“.10

    erklärt, Datenproblem

    Was wir tun: Alter unbekannt (-1), Beschäftigungsverhältnis zählt.

    Beleg
    Tabelle
    meta.pruefung_treffer
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, p.anzahl, p.umfang, coalesce(p.einstufung, 'nicht-erklaerbar') AS einstufung, p.massnahme, p.anhalten,
           p.details,
           ARRAY(SELECT q.nr FROM meta.rueckfrage q WHERE q.antwort IS NULL
                 AND (q.nr = p.details ->> 'rueckfrage' OR q.regel_name = r.name)) AS offene_rueckfragen
    FROM meta.pruefung_treffer p JOIN meta.regel r ON r.id = p.regel_id
    WHERE p.lauf_id = 113 AND p.regel_id = 177 AND p.ebene = 'satz';
    
    -- Prüfabfrage der Regel, mit der die Anzahl gerechnet wurde:
    -- _bestand: Verhältnisse am Stichtag nach Abschnittswahl (statagent.zaehlung) im Lauf 113
    WITH t AS (SELECT vvh_id, 1 AS gewicht FROM _bestand WHERE alter_roh > 110 OR alter_roh < 0)
    SELECT coalesce(sum(gewicht), 0)::bigint AS n,
           coalesce((SELECT jsonb_agg(v ORDER BY v)
                     FROM (SELECT DISTINCT vvh_id AS v FROM t ORDER BY 1 LIMIT 5) b), '[]'::jsonb) AS beispiele
    FROM t

Kein Fehler: echt oder üblich · 4 Prüfungen

Ungewohnt, aber echt oder üblich, etwa Saison oder Nachmeldungen. Zählt mit und wird vermerkt.

  • Frühere Monate sehen in dieser Lieferung anders aus. Das steht unten als Revisionsbedarf, veröffentlichte Zahlen bleiben.484

    September 2025: -141 (0,0 %), Oktober 2025: +343 (0,1 %)

    erklärt, plausibel

    Was wir tun: Der Unterschied steht als Revisionsbedarf im Bericht, veröffentlichte Zahlen bleiben.

    Beleg
    Tabelle
    meta.pruefung_treffer
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, p.anzahl, p.umfang, coalesce(p.einstufung, 'nicht-erklaerbar') AS einstufung, p.massnahme, p.anhalten,
           p.details,
           ARRAY(SELECT q.nr FROM meta.rueckfrage q WHERE q.antwort IS NULL
                 AND (q.nr = p.details ->> 'rueckfrage' OR q.regel_name = r.name)) AS offene_rueckfragen
    FROM meta.pruefung_treffer p JOIN meta.regel r ON r.id = p.regel_id
    WHERE p.lauf_id = 113 AND p.regel_id = 194 AND p.ebene = 'lieferung';
    
    -- Prüfabfrage der Regel, mit der die Anzahl gerechnet wurde:
    SELECT berichtsmonat, veroeffentlicht, aktuell, differenz FROM meta.revision
                     WHERE lauf_id = 113 AND gliederung = 'insgesamt' ORDER BY berichtsmonat
  • 240 Beschäftigungsverhältnisse gehören Menschen ab 75 Jahren. Das ist echt, sie zählen in der Gruppe „75 und mehr“.240

    erklärt, plausibel

    Was wir tun: Gezählt, Zeile 75 und mehr.

    Beleg
    Tabelle
    meta.pruefung_treffer
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, p.anzahl, p.umfang, coalesce(p.einstufung, 'nicht-erklaerbar') AS einstufung, p.massnahme, p.anhalten,
           p.details,
           ARRAY(SELECT q.nr FROM meta.rueckfrage q WHERE q.antwort IS NULL
                 AND (q.nr = p.details ->> 'rueckfrage' OR q.regel_name = r.name)) AS offene_rueckfragen
    FROM meta.pruefung_treffer p JOIN meta.regel r ON r.id = p.regel_id
    WHERE p.lauf_id = 113 AND p.regel_id = 178 AND p.ebene = 'satz';
    
    -- Prüfabfrage der Regel, mit der die Anzahl gerechnet wurde:
    -- _bestand: Verhältnisse am Stichtag nach Abschnittswahl (statagent.zaehlung) im Lauf 113
    WITH t AS (SELECT vvh_id, 1 AS gewicht FROM _bestand WHERE alter_roh BETWEEN 75 AND 110)
    SELECT coalesce(sum(gewicht), 0)::bigint AS n,
           coalesce((SELECT jsonb_agg(v ORDER BY v)
                     FROM (SELECT DISTINCT vvh_id AS v FROM t ORDER BY 1 LIMIT 5) b), '[]'::jsonb) AS beispiele
    FROM t
  • Beschäftigungsverhältnisse, die im Vormonat noch liefen, fehlen in der Lieferung ganz.131

    131 von 313.154 Beschäftigungsverhältnissen des Vormonats fehlen (0,0 %)

    erklärt, plausibel

    Was wir tun: Nichts zu tun, es sind Einzelfälle wie Stornos.

    Beleg
    Tabelle
    meta.pruefung_treffer
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, p.anzahl, p.umfang, coalesce(p.einstufung, 'nicht-erklaerbar') AS einstufung, p.massnahme, p.anhalten,
           p.details,
           ARRAY(SELECT q.nr FROM meta.rueckfrage q WHERE q.antwort IS NULL
                 AND (q.nr = p.details ->> 'rueckfrage' OR q.regel_name = r.name)) AS offene_rueckfragen
    FROM meta.pruefung_treffer p JOIN meta.regel r ON r.id = p.regel_id
    WHERE p.lauf_id = 113 AND p.regel_id = 187 AND p.ebene = 'lieferung';
    
    -- Prüfabfrage der Regel, mit der die Anzahl gerechnet wurde:
    WITH basis AS (
      SELECT DISTINCT v.vvh_id FROM bereinigt.abschnitt v
      WHERE v.lieferung = '2025-10' AND v.regelsatz = 'v1' AND v.herkunft = 'geliefert'
        AND v.beginn <= '2025-10-31'::date AND (v.ende IS NULL OR v.ende >= '2025-10-31'::date)
    ),
    fehlt AS (
      SELECT b.vvh_id FROM basis b
      WHERE NOT EXISTS (SELECT 1 FROM bereinigt.abschnitt a
                        WHERE a.lieferung = '2025-11' AND a.regelsatz = 'v1' AND a.herkunft = 'geliefert'
                          AND a.vvh_id = b.vvh_id)
    )
    SELECT (SELECT count(*) FROM basis) AS basis, (SELECT count(*) FROM fehlt) AS n,
           coalesce((SELECT jsonb_agg(vvh_id ORDER BY vvh_id)
                     FROM (SELECT vvh_id FROM fehlt ORDER BY vvh_id LIMIT 5) x), '[]'::jsonb) AS beispiele
  • 1 Gruppen mit mindestens 500 Beschäftigungsverhältnissen haben sich gegenüber dem Vormonat um mehr als 3 % verändert.1

    1 Zellen (0 ohne Saisonerklärung): oenace A -14,78 %

    erklärt, plausibel

    Was wir tun: Nichts zu tun, das ist die übliche Saison (Land- und Forstwirtschaft, Bau, Beherbergung und Gastronomie; Salzburg, Tirol, Vorarlberg).

    Beleg
    Tabelle
    meta.pruefung_treffer
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, p.anzahl, p.umfang, coalesce(p.einstufung, 'nicht-erklaerbar') AS einstufung, p.massnahme, p.anhalten,
           p.details,
           ARRAY(SELECT q.nr FROM meta.rueckfrage q WHERE q.antwort IS NULL
                 AND (q.nr = p.details ->> 'rueckfrage' OR q.regel_name = r.name)) AS offene_rueckfragen
    FROM meta.pruefung_treffer p JOIN meta.regel r ON r.id = p.regel_id
    WHERE p.lauf_id = 113 AND p.regel_id = 185 AND p.ebene = 'aggregat';
    
    -- Prüfabfrage der Regel, mit der die Anzahl gerechnet wurde:
    -- Gliederung qualifikation
    WITH vm AS (
      SELECT "qualifikation"::text AS code, sum(wert)::bigint AS n FROM stat.stat_beschaeftigte
      WHERE regelsatz = 'v1' AND regelstand = 'c3ecc447f8384fea' AND zeitraum_art = 'Stichtag'
        AND zeitraum_bis = '2025-10-31'::date AND variable = 'Beschaeftigungsverhaeltnisse'
      GROUP BY 1
    ),
    akt AS (SELECT "qualifikation"::text AS code, sum(wert)::bigint AS n FROM (SELECT * FROM stat.stat_beschaeftigte
    WHERE regelsatz = 'v1' AND regelstand = 'c3ecc447f8384fea' AND zeitraum_art = 'Stichtag'
      AND zeitraum_bis = '2025-11-30'::date AND variable = 'Beschaeftigungsverhaeltnisse') AS z GROUP BY 1)
    SELECT coalesce(vm.code, akt.code) AS code, coalesce(vm.n, 0) AS vormonat, coalesce(akt.n, 0) AS aktuell
    FROM vm FULL JOIN akt ON akt.code = vm.code
    ORDER BY coalesce(vm.code, akt.code) COLLATE "C";
    
    -- Gliederung region
    WITH vm AS (
      SELECT "region"::text AS code, sum(wert)::bigint AS n FROM stat.stat_beschaeftigte
      WHERE regelsatz = 'v1' AND regelstand = 'c3ecc447f8384fea' AND zeitraum_art = 'Stichtag'
        AND zeitraum_bis = '2025-10-31'::date AND variable = 'Beschaeftigungsverhaeltnisse'
      GROUP BY 1
    ),
    akt AS (SELECT "region"::text AS code, sum(wert)::bigint AS n FROM (SELECT * FROM stat.stat_beschaeftigte
    WHERE regelsatz = 'v1' AND regelstand = 'c3ecc447f8384fea' AND zeitraum_art = 'Stichtag'
      AND zeitraum_bis = '2025-11-30'::date AND variable = 'Beschaeftigungsverhaeltnisse') AS z GROUP BY 1)
    SELECT coalesce(vm.code, akt.code) AS code, coalesce(vm.n, 0) AS vormonat, coalesce(akt.n, 0) AS aktuell
    FROM vm FULL JOIN akt ON akt.code = vm.code
    ORDER BY coalesce(vm.code, akt.code) COLLATE "C";
    
    -- Gliederung oenace
    WITH vm AS (
      SELECT "oenace"::text AS code, sum(wert)::bigint AS n FROM stat.stat_beschaeftigte
      WHERE regelsatz = 'v1' AND regelstand = 'c3ecc447f8384fea' AND zeitraum_art = 'Stichtag'
        AND zeitraum_bis = '2025-10-31'::date AND variable = 'Beschaeftigungsverhaeltnisse'
      GROUP BY 1
    ),
    akt AS (SELECT "oenace"::text AS code, sum(wert)::bigint AS n FROM (SELECT * FROM stat.stat_beschaeftigte
    WHERE regelsatz = 'v1' AND regelstand = 'c3ecc447f8384fea' AND zeitraum_art = 'Stichtag'
      AND zeitraum_bis = '2025-11-30'::date AND variable = 'Beschaeftigungsverhaeltnisse') AS z GROUP BY 1)
    SELECT coalesce(vm.code, akt.code) AS code, coalesce(vm.n, 0) AS vormonat, coalesce(akt.n, 0) AS aktuell
    FROM vm FULL JOIN akt ON akt.code = vm.code
    ORDER BY coalesce(vm.code, akt.code) COLLATE "C";
    
    -- Gliederung geschlecht
    WITH vm AS (
      SELECT "geschlecht"::text AS code, sum(wert)::bigint AS n FROM stat.stat_beschaeftigte
      WHERE regelsatz = 'v1' AND regelstand = 'c3ecc447f8384fea' AND zeitraum_art = 'Stichtag'
        AND zeitraum_bis = '2025-10-31'::date AND variable = 'Beschaeftigungsverhaeltnisse'
      GROUP BY 1
    ),
    akt AS (SELECT "geschlecht"::text AS code, sum(wert)::bigint AS n FROM (SELECT * FROM stat.stat_beschaeftigte
    WHERE regelsatz = 'v1' AND regelstand = 'c3ecc447f8384fea' AND zeitraum_art = 'Stichtag'
      AND zeitraum_bis = '2025-11-30'::date AND variable = 'Beschaeftigungsverhaeltnisse') AS z GROUP BY 1)
    SELECT coalesce(vm.code, akt.code) AS code, coalesce(vm.n, 0) AS vormonat, coalesce(akt.n, 0) AS aktuell
    FROM vm FULL JOIN akt ON akt.code = vm.code
    ORDER BY coalesce(vm.code, akt.code) COLLATE "C"

Noch nicht erklärt · 1 Prüfung

Das Programm rät nicht, ein Mensch muss es klären.

  • 281 neue Beschäftigungsverhältnisse gehören Personen, die schon ein gleiches Beschäftigungsverhältnis haben. Sie zählen, die Fachabteilung soll das klären.281

    nicht erklärbar, wartet auf Antwort der Fachabteilung (R8)

    Was wir tun: Sie sind markiert und zählen mit, denn gezählt werden Beschäftigungsverhältnisse, nicht Personen. Die Fachabteilung soll klären, ob es doppelte Meldungen sind.

    Beleg
    Tabelle
    meta.pruefung_treffer
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, p.anzahl, p.umfang, coalesce(p.einstufung, 'nicht-erklaerbar') AS einstufung, p.massnahme, p.anhalten,
           p.details,
           ARRAY(SELECT q.nr FROM meta.rueckfrage q WHERE q.antwort IS NULL
                 AND (q.nr = p.details ->> 'rueckfrage' OR q.regel_name = r.name)) AS offene_rueckfragen
    FROM meta.pruefung_treffer p JOIN meta.regel r ON r.id = p.regel_id
    WHERE p.lauf_id = 113 AND p.regel_id = 190 AND p.ebene = 'satz';
    
    -- Prüfabfrage der Regel, mit der die Anzahl gerechnet wurde:
    -- _bestand: Verhältnisse am Stichtag nach Abschnittswahl (statagent.zaehlung) im Lauf 113
    WITH t AS (SELECT b.vvh_id, 1 AS gewicht FROM _bestand b
       WHERE b.beginn BETWEEN '2025-11-01'::date AND '2025-11-30'::date AND b.person_id IS NOT NULL
         AND EXISTS (SELECT 1 FROM _bestand z
                     WHERE z.person_id = b.person_id AND z.vvh_id <> b.vvh_id
                       AND z.qualifikation = b.qualifikation AND z.oenace = b.oenace
                       AND z.bundesland = b.bundesland))
    SELECT coalesce(sum(gewicht), 0)::bigint AS n,
           coalesce((SELECT jsonb_agg(v ORDER BY v)
                     FROM (SELECT DISTINCT vvh_id AS v FROM t ORDER BY 1 LIMIT 5) b), '[]'::jsonb) AS beispiele
    FROM t

Überblick

428.277 gelesene Zeilen = 389.823 gezählt + 38.454 nicht gezählt + 0 ausgeschlossen.

Beleg
Tabelle
meta.lauf
Lieferung
November 2025
Regelstand
c3ecc447f8384fea
Lauf
66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
SELECT lieferung, gelesen, gezaehlt - fortgeschrieben AS gezaehlt_aus_lieferung,
       nicht_gezaehlt, ausgeschlossen, fortgeschrieben
FROM meta.lauf
WHERE id = 113;
Bundesländer
  • Wien92.670
  • Oberösterreich67.904
  • Niederösterreich64.417
  • Steiermark53.476
  • Tirol34.224
  • Salzburg26.187
  • Kärnten21.325
  • Vorarlberg16.614
  • Burgenland11.032
  • unbekannt1.974
  • Österreich gesamt389.823
Beleg
Tabelle
stat.stat_beschaeftigte
Lieferung
November 2025
Regelstand
c3ecc447f8384fea
Lauf
66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
SELECT s.region, k.bezeichnung, sum(s.wert) AS beschaeftigungsverhaeltnisse
FROM stat.stat_beschaeftigte s
LEFT JOIN stat.klass_region k ON k.code = s.region AND k.ebene = 'bundesland'
  AND k.gueltig_von <= s.zeitraum_bis AND (k.gueltig_bis IS NULL OR k.gueltig_bis >= s.zeitraum_bis)
WHERE s.regelsatz = 'v1' AND s.regelstand = 'c3ecc447f8384fea'
  AND s.zeitraum_art = 'Stichtag' AND s.variable = 'Beschaeftigungsverhaeltnisse'
  AND s.zeitraum_bis BETWEEN '2025-11-01' AND '2025-11-30'
GROUP BY ROLLUP ((s.region, k.bezeichnung))
ORDER BY grouping(s.region), s.region = '0', 3 DESC;
Gleiche Daten, gleiche Zahlen

Dieselben Daten und Regeln ergeben dieselben Zahlen: 3 Läufe mit diesen Regeln, alle mit demselben Ergebnis-Hash 66a453d9.

Beleg
Tabelle
meta.lauf
Lieferung
November 2025
Regelstand
c3ecc447f8384fea
Lauf
66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
SELECT count(*) AS laeufe, count(DISTINCT ergebnis_hash) AS hashes, min(ergebnis_hash) AS ergebnis_hash
FROM meta.lauf
WHERE lieferung = '2025-11' AND regelsatz = 'v1'
  AND regelstand = 'c3ecc447f8384fea' AND status IN ('fertig', 'unveraendert');

4 Rückfragen betreffen diesen Monat, 4 offen.

  • R1Geburtsmonat 13 im Geburtsdatumoffen

    Mit welchem Tag sollen wir bei Geburtsmonat 13 rechnen: mit dem 1. Juli, mit dem 1. Jänner oder nur mit der Differenz der Jahre?

    Unser Vorschlag: Wir lesen Monat 13 als „Monat unbekannt“ und rechnen mit dem 1. Juli des Geburtsjahres, also der Jahresmitte. Das ist die beste Schätzung, wenn nur das Jahr bekannt ist, und für August 2024 ergibt es genau die Zahlen des Beispielberichts. Einen Unterschied macht die Wahl nur in Berichtsmonaten von Jänner bis Juni. Wollt ihr anders rechnen, etwa nur mit der Differenz der Jahre, stellen wir einen Wert der Regel um. Die Fälle stehen jeden Monat im Qualitätsbericht.

  • R6Obergrenze für ein glaubwürdiges Alteroffen

    Ab welchem Alter sollen wir ein Geburtsdatum als Fehler werten?

    Unser Vorschlag: Ein Alter über 110 Jahre halten wir für einen Fehler im Geburtsdatum; es steht unter „Alter unbekannt“, das Beschäftigungsverhältnis zählt trotzdem mit. Zwischen 78 und 116 Jahren gibt es in keiner Lieferung einen Fall, deshalb ergibt jede Grenze in diesem Bereich dieselben Zahlen. Eine Grenze bei 74 würde dagegen echte 75-Jährige wegrechnen, 62 bis 310 je Monat. Dieselbe Grenze gilt für das Geburtsjahr in der Ministeriums-Lieferung.

  • R8Kurze Zweitmeldungen derselben Personoffen

    Sind das echte zweite Beschäftigungsverhältnisse oder doppelte Meldungen, die wir nicht zählen sollen?

    Unser Vorschlag: Wir zählen sie mit, denn gezählt werden Beschäftigungsverhältnisse und nicht Personen, und auch der Beispielbericht zählt sie. Im Qualitätsbericht sind sie gekennzeichnet und als „nicht erklärbar“ eingestuft, bis ihr antwortet. Ausschließen könnten wir sie nur mit Wissen aus der nächsten Lieferung, und die darf ein Monat nicht nutzen.

  • R10Große Gruppen springen ohne Saisongrund um mehr als 3 %offen

    Kennt ihr für diese Sprünge eine Ursache in den Meldungen der Dienstgeber?

    Unser Vorschlag: Wir zählen die Beschäftigungsverhältnisse so, wie sie geliefert sind, und kennzeichnen jeden Sprung im Qualitätsbericht mit Gruppe, Monat und Prozent als „nicht erklärbar“. Ohne eure Auskunft wäre jede Korrektur ein Eingriff in eine Entwicklung, die echt sein kann.

Beleg
Tabelle
meta.rueckfrage
Lieferung
November 2025
Regelstand
c3ecc447f8384fea
Lauf
66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
SELECT q.nr, q.titel, q.lieferungen, q.antwort IS NOT NULL AS beantwortet
FROM meta.rueckfrage q
WHERE strpos(q.lieferungen, 'lieferung_2025-11') > 0
   OR (q.lieferungen ~* '\malle\M' AND q.ab_lieferung <= '2025-11')
   OR q.nr IN (SELECT t.details ->> 'rueckfrage' FROM meta.pruefung_treffer t
               WHERE t.lauf_id = 113 AND t.anzahl > 0)
   OR q.regel_name IN (SELECT r.name FROM meta.pruefung_treffer t JOIN meta.regel r ON r.id = t.regel_id
                       WHERE t.lauf_id = 113 AND t.anzahl > 0)
ORDER BY length(q.nr), q.nr;

5 Annahmen gelten in diesem Monat, jede als Regel umgesetzt.

  • Kurze Zweitmeldungen derselben Person zählen als eigenes Beschäftigungsverhältnis. Wir kennzeichnen sie, bis die Fachabteilung antwortet.281

    Betrifft in diesem Monat 281 Beschäftigungsverhältnisse, so viele findet die Prüfung.

    Begründung: Die Statistik zählt Beschäftigungsverhältnisse, nicht Personen. So geht nichts verloren, und die Fälle bleiben sichtbar.

    Gehört zu Rückfrage R8.

    Beleg
    Tabelle
    meta.pruefung_treffer
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, sum(t.anzahl) AS beschaeftigungsverhaeltnisse
    FROM meta.pruefung_treffer t JOIN meta.regel r ON r.id = t.regel_id
    WHERE t.lauf_id = 113 AND r.name = 'P19_phantom_doppelmeldung' AND t.ebene = 'satz'
    GROUP BY r.name;
  • Alte Branchencodes aus ÖNACE 2003 (DA bis DN) zählen zur Herstellung von Waren (Abschnitt C), in den Tabellen und in der Lieferung an das Ministerium gleich.50

    Betrifft in diesem Monat 50 Zeilen.

    Begründung: Der Beispielbericht des Veranstalters zählt sie ebenso zu C. Dieselbe Person soll nicht an einer Stelle zu C zählen und an der anderen nicht.

    Beleg
    Tabelle
    meta.regel_wirkung
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, r.beschreibung, sum(w.saetze) AS saetze
    FROM meta.regel_wirkung w JOIN meta.regel r ON r.id = w.regel_id
    WHERE w.lauf_id = 113 AND r.name = 'Q01_oenace_2003_unterabschnitte'
    GROUP BY r.name, r.beschreibung;
  • Steht im Geburtsdatum der Monat 13, gilt das Geburtsjahr, und als Geburtstag nehmen wir den 1. Juli an.389

    Betrifft in diesem Monat 389 Beschäftigungsverhältnisse, so viele findet die Prüfung.

    Begründung: So passen die Altersgruppen zum Beispielbericht. Antwortet die Fachabteilung anders, ändern wir nur einen Wert in der Regel.

    Gehört zu Rückfrage R1.

    Beleg
    Tabelle
    meta.pruefung_treffer
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, sum(t.anzahl) AS beschaeftigungsverhaeltnisse
    FROM meta.pruefung_treffer t JOIN meta.regel r ON r.id = t.regel_id
    WHERE t.lauf_id = 113 AND r.name = 'P04_geburtsdatum_monat_13' AND t.ebene = 'satz'
    GROUP BY r.name;
  • Ein Alter über 110 Jahre halten wir für einen Fehler und führen es als „unbekannt“. Ein Alter von 75 bis 110 Jahren ist echt und zählt.10

    Betrifft in diesem Monat 10 Beschäftigungsverhältnisse, so viele findet die Prüfung.

    Begründung: Im Beispielbericht stehen diese Fälle unter „unbekannt“. Ab September 2024 gibt es echte Beschäftigte über 75, die sollen nicht verschwinden.

    Gehört zu Rückfrage R6.

    Beleg
    Tabelle
    meta.pruefung_treffer
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, sum(t.anzahl) AS beschaeftigungsverhaeltnisse
    FROM meta.pruefung_treffer t JOIN meta.regel r ON r.id = t.regel_id
    WHERE t.lauf_id = 113 AND r.name = 'P06_alter_unplausibel' AND t.ebene = 'satz'
    GROUP BY r.name;
  • Hat ein Beschäftigungsverhältnis mehrere Zeitabschnitte, gelten die Merkmale des Abschnitts mit dem spätesten Beginn. Lücken zwischen Abschnitten füllen wir nicht auf.

    Betrifft in diesem Monat 0 Zeilen.

    Begründung: Die jüngere Meldung ist die aktuellere. Eine feste Reihenfolge macht jeden Lauf wiederholbar, und gefüllte Lücken wären erfundene Beschäftigungstage.

    Beleg
    Tabelle
    meta.regel_wirkung
    Lieferung
    November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.name, r.beschreibung, sum(w.saetze) AS saetze
    FROM meta.regel_wirkung w JOIN meta.regel r ON r.id = w.regel_id
    WHERE w.lauf_id = 113 AND r.name = 'R1_R3_verhaeltnis_einmal'
    GROUP BY r.name, r.beschreibung;
Beleg
Tabelle
meta.annahme
Lieferung
November 2025
Regelstand
c3ecc447f8384fea
Lauf
66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
WITH a AS (
  SELECT a.*, count(*) OVER (PARTITION BY a.regel_name) AS annahmen_je_regel
  FROM meta.annahme a
  WHERE a.lieferungen IS NULL OR '2025-11' = ANY (a.lieferungen)
), p AS (
  SELECT a.nr, r.name, r.name = a.regel_name AS eigene_regel, sum(t.anzahl) AS anzahl
  FROM a
  JOIN meta.pruefung_treffer t ON t.lauf_id = 113 AND t.anzahl > 0 AND t.ebene = 'satz'
  JOIN meta.regel r ON r.id = t.regel_id AND (r.name = a.regel_name OR t.details ->> 'rueckfrage' = a.rueckfrage)
  GROUP BY a.nr, r.name, a.regel_name
), e AS (
  SELECT a.*,
    (SELECT sum(w.saetze) FROM meta.regel_wirkung w JOIN meta.regel r ON r.id = w.regel_id
     WHERE w.lauf_id = 113 AND r.name = a.regel_name) AS regel_saetze,
    (SELECT p.anzahl FROM p WHERE p.nr = a.nr AND p.eigene_regel) AS eigene_pruefung,
    (SELECT count(*) FROM p WHERE p.nr = a.nr) AS pruefungen,
    (SELECT min(p.name) FROM p WHERE p.nr = a.nr) AS pruefung,
    (SELECT min(p.anzahl) FROM p WHERE p.nr = a.nr) AS pruefung_anzahl,
    EXISTS (SELECT 1 FROM meta.regel r WHERE r.name = a.regel_name AND r.typ = 'pruefung') AS eigene_ist_pruefung
  FROM a
)
SELECT e.nr, e.rueckfrage, e.satz, e.begruendung, e.regel_name,
  CASE WHEN e.annahmen_je_regel = 1 AND e.regel_saetze IS NOT NULL THEN 'regel'
       WHEN e.eigene_pruefung IS NOT NULL OR e.eigene_ist_pruefung OR e.pruefungen = 1 THEN 'pruefung' END AS wirkung_quelle,
  CASE WHEN e.annahmen_je_regel = 1 AND e.regel_saetze IS NOT NULL THEN e.regel_name
       WHEN e.eigene_pruefung IS NOT NULL OR e.eigene_ist_pruefung THEN e.regel_name
       WHEN e.pruefungen = 1 THEN e.pruefung END AS wirkung_regel,
  CASE WHEN e.annahmen_je_regel = 1 AND e.regel_saetze IS NOT NULL THEN e.regel_saetze
       WHEN e.eigene_pruefung IS NOT NULL THEN e.eigene_pruefung
       WHEN e.eigene_ist_pruefung THEN 0
       WHEN e.pruefungen = 1 THEN e.pruefung_anzahl END AS wirkung_saetze,
  (SELECT q.beleg_sql FROM meta.rueckfrage q WHERE q.nr = e.rueckfrage) AS beleg_sql
FROM e ORDER BY length(e.nr), e.nr;

Diese Lieferung zeigt Revisionsbedarf für 2 frühere Monate.

  • Mit dieser Lieferung wäre September 2025 um 141 Beschäftigungsverhältnisse kleiner als bisher gezeigt (394.059 statt 394.200). Die bisher gezeigte Zahl bleibt stehen, weil jeder Monat nur aus seiner eigenen Lieferung gerechnet wird.

    Gründe: 768 Beschäftigungsverhältnisse wurden nachgemeldet, 693 Beschäftigungsverhältnisse wurden rückwirkend abgemeldet und 216 Beschäftigungsverhältnisse sind in der neuen Lieferung nicht mehr enthalten.

    Beleg
    Tabelle
    meta.revision
    Monat
    September 2025 aus Lieferung November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.berichtsmonat, r.veroeffentlicht, r.aktuell, r.differenz, r.status_vorher, u.ursache, u.anzahl,
           EXISTS (SELECT 1 FROM meta.revision g WHERE g.lauf_id = r.lauf_id AND g.berichtsmonat = r.berichtsmonat AND g.gliederung <> 'insgesamt' AND g.differenz <> 0) AS umgeschichtet
    FROM meta.revision r
    LEFT JOIN meta.revision_ursache u ON u.lauf_id = r.lauf_id AND u.berichtsmonat = r.berichtsmonat
    WHERE r.lauf_id = 113 AND r.gliederung = 'insgesamt' AND r.berichtsmonat = '2025-09'
    ORDER BY u.anzahl DESC;
  • Mit dieser Lieferung wäre Oktober 2025 um 343 Beschäftigungsverhältnisse größer als bisher gezeigt (391.243 statt 390.900). Die bisher gezeigte Zahl bleibt stehen, weil jeder Monat nur aus seiner eigenen Lieferung gerechnet wird.

    Gründe: 3.330 Beschäftigungsverhältnisse wurden nachgemeldet, 2.640 Beschäftigungsverhältnisse wurden rückwirkend abgemeldet, 347 Beschäftigungsverhältnisse sind in der neuen Lieferung nicht mehr enthalten und bei 1 Beschäftigungsverhältnis hat sich ein Merkmal geändert.

    Beleg
    Tabelle
    meta.revision
    Monat
    Oktober 2025 aus Lieferung November 2025
    Regelstand
    c3ecc447f8384fea
    Lauf
    66a453d932874a8df720fd6352c33d685f67ff95cd2bf333ddcd53c0ae11ed97
    SELECT r.berichtsmonat, r.veroeffentlicht, r.aktuell, r.differenz, r.status_vorher, u.ursache, u.anzahl,
           EXISTS (SELECT 1 FROM meta.revision g WHERE g.lauf_id = r.lauf_id AND g.berichtsmonat = r.berichtsmonat AND g.gliederung <> 'insgesamt' AND g.differenz <> 0) AS umgeschichtet
    FROM meta.revision r
    LEFT JOIN meta.revision_ursache u ON u.lauf_id = r.lauf_id AND u.berichtsmonat = r.berichtsmonat
    WHERE r.lauf_id = 113 AND r.gliederung = 'insgesamt' AND r.berichtsmonat = '2025-10'
    ORDER BY u.anzahl DESC;