Ankündigung

Einklappen
Keine Ankündigung bisher.

[gelöste] In 5er Abschnitten zusammenfassen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [gelöste] In 5er Abschnitten zusammenfassen

    Hallo,

    ich habe ein eher mathematisches Problem und weiß nicht genau wie ich zur einer sinnvollen Lösung kommen.

    Ich habe eine Statistik die mir das Geburtsjahr vieler Personen auflistet. Diese Statisik habe ich in einer MySQL-Tabelle.

    id | name | geburtsjahr
    1 | rudi | 1945
    2 | jens | 1988
    3 | gabi | 1974
    ....

    aus dieser Tabelle rufe ich alle Daten ab um eine Tabelle zu erstellen die mir sagt wer wie alt ist (orientiert am 1.1., da ich kein genaues Datum habe). Das ist auch nicht das Problem. Mein Problem ist es jetzt das ganze in 5er Blöcke zu fassen. Also, wie bekomme ich z.B. folgende Tabelle:

    alter | anzahl
    0-5 Jahre | 0 Personen
    6-10 Jahre | 3 Personen
    11-15 Jahre | 22 Personen
    16-20 Jahre | 40 Personen
    ...
    bis hoch zu "älter als 80".

    Gibt es eine Funktion oder einen Weg immer auf den nächsten 5er herunter zu kommen. Wenn es um 10 Schritte ginge, dann wäre es leichert, weil ich ja nur von dem 2-stelligem Alter die vordere Ziffer nehmen bräuchte, aber mit 5er Schritten hab ich jetzt mein Problem.

    Ich brauche keinen kompletten Code, der Weg ist bei mir das Ziel. Und vielleicht der Hinweis auf die passenden Funktionen, da ich im Manual noch nichts gefunden habe (weder bei MySQL noch bei PHP4 oder PHP5)

    Danke,
    Stefan
    SELECT * benutze ich nur um den Post kurz zu halten.

  • #2
    Teste folgende Abfrage:
    Code:
    SELECT
       COUNT(*) AS anzahl,
       FLOOR(ABS((YEAR(NOW() - geburtsjahr - 1)) / 5)) AS altersgruppe
    FROM
       tabelle
    GROUP BY
       altersgruppe
    ORDER BY
       altersgruppe
    ~dilemma~

    Kommentar


    • #3
      Dividiere doch einfach das Alter durch 5 und runde dieses Ergebnis auf.

      Kommentar


      • #4
        Zitat von dilemma
        Teste folgende Abfrage:
        Code:
        SELECT
           COUNT(*) AS anzahl,
           FLOOR(ABS((YEAR(NOW() - geburtsjahr - 1)) / 5)) AS altersgruppe
        FROM
           tabelle
        GROUP BY
           altersgruppe
        ORDER BY
           altersgruppe
        ~dilemma~
        Leider nein. Folgendes habe ich somit bekommen:
        anzahl | altersgruppe
        828 | NULL
        254 | 401

        und das wars. Nur die Zwei. Der Weg war wohl der falsche. Danke trotzdem. Aber ich habe verstanden was du meistes. Ich werds mal versuchen daraufhin was auszuprobieren.
        SELECT * benutze ich nur um den Post kurz zu halten.

        Kommentar


        • #5
          Zitat von xabbuh
          Dividiere doch einfach das Alter durch 5 und runde dieses Ergebnis auf.
          Angenommen ich habe das Alter von 23. Dann dividiere ich durch 5.
          Code:
          23 / 5 = 4,6
          Aufgerundet 5
          nur jetzt verstehe ich nicht was ich damit erreicht habe?
          SELECT * benutze ich nur um den Post kurz zu halten.

          Kommentar


          • #6
            wenn einer 23ist wäre er dann in der 5ten Gruppe
            :arrow: [URL="http://tiny.cc/0xlvv"]Wie man Fragen richtig stellt[/URL]

            Kommentar


            • #7
              Zitat von stefanjann
              nur jetzt verstehe ich nicht was ich damit erreicht habe?
              Wenn du weißt, in welcher "Gruppe" er ist, kannst du sehr einfach berechnen, welche Altersspanne dies ist:
              PHP-Code:
              <?php
                  printf
              ('%d - %d'$group 4$group 5);
              ?>

              Kommentar


              • #8
                Zitat von xabbuh
                Zitat von stefanjann
                nur jetzt verstehe ich nicht was ich damit erreicht habe?
                Wenn du weißt, in welcher "Gruppe" er ist, kannst du sehr einfach berechnen, welche Altersspanne dies ist:
                PHP-Code:
                <?php
                    printf
                ('%d - %d'$group 4$group 5);
                ?>
                Hallo,
                danke, das ist der Weg den ich gehe.
                Gruß,
                Stefan
                SELECT * benutze ich nur um den Post kurz zu halten.

                Kommentar

                Lädt...
                X