Gruppenberechnung aus Geburtstagsalter

Hallo,
mit DATEDIFF( ‘yy’, [Geburtstag], CURDATE( ) habe ich das jetzige Alter bestimmt.
Wie ist es möglich, von den Mitgliedern die Altersgruppen, wie 20,30 Oder 40 zu bestimmen und zu sortieren.
Ich würde mich freuen, wenn mir jemand helfen kann.

Siehe “Query_AgeGroups” in https://ask.libreoffice.org/uploads/short-url/zzONjdn2FuWbEFXRlyFzRj7DKDq.odb
Unterabfrage “A” berechnet das Alter jeder Person.
Unterabfrage “B” verknüpft die gerundeten 10-Jahres-Gruppen zu Beschriftungen “10-19”, “20-29” usw.
Unterabfrage “C” zählt die Gesamtzahl der Personen, für die Berechnung der Prozentanteile in der Hauptabfrage.

@Schwebebahn : Du hast damit nicht das aktuelle Alter, sondern das Alter, das die Person in dem entsprechenden Jahr hat oder haben wird. Eine am 31.12.2023 geborene Person bekommt son am 1.1.2024 bereits das Alter ‘1 Jahr’ bescheinigt. Im Handbuch nenne ich diese Alter salopp das “Sportalter”. Dadurch werden Altersklassen festgelegt. Und wie das dann gruppier wird steht in dem Einführungsbeispiel, im aktuellen Handbuch auf S. 53

Ich habe die Datenbank nochmal erweitert.
DummyPersons8.odb (103.3 KB)

  • In Tabelle “AgeClasses” kann man Altersklassen mit beliebiger Abstufung eintragen, beginnend mit 0 und 127 am Ende. 127 ist die höchste Zahl des Datentyps TINYINTEGER und auch höchstes erreichbares Lebensalter nach heutigem Stand.
  • Abfrage “Ages” liefert das Alter aller Personen.
  • Abfrage “AgeClass” liefert die Unter- und Obergrenzen aus Tabelle “AgeClasses” für jedes Alter in Abfrage “Ages”…
  • Abfrage “AgeGroups” erledigt den Rest, verkettet die Grenzwerte aus Abfrage “AgeClass” und zählt die Einträge für jede Klasse.

Wir haben hier also beliebig abgestufte statt errechneter Altersklassen und ich habe die Abfrage mit integrierten Unterabfragen formal in 3 getrennte Abfragen aufgesplittet, was etwas einfacher zu durchschauen ist.

Abfrage"Ages" kann man wie folgt lesen: DateDiff(Jahre) abzüglich ein Jahr falls der Monat kleiner als der heutige Monat ist oder falls der Monat gleich, aber der Tag kleiner ist. Also ziehe ein Jahr ab, wenn der disjährige Geburtstag noch bevorsteht.
Abfrage AgeClass errechnet die Untergrenze aus der höchsten Zahl in AgeClasses aus allen Werten die kleiner sind als das Alter. Die Obergrenze ergibt sich entsprechend aus dem kleinsten Wert in AgeClasses aus allen Werten die größer sind als das Alter minus 1,.