0

Monatswert aus einer Spalte

Guten Morgen :)

Ich hoffe die Frage ist nicht zu banal. Ich bin begeistert vonninox, aber quasi Einsteiger bei db und arbeite nun seit 3 Tagen mit ninox. Also: Ich habe eine Tabelle erstellt und eine paar Spalten befüllt. In der ersten Spalte ist das tägliche Datum seit 1.1.2018. In der zweiten Spalte die täglichen Temperatur zum jeweiligen Datum. Nun möchte ich in einer neuen Spalte die durchschnittlichen Monatswerte der zweiten Spalte (tägliche Temperatur) dargestellt haben. Die Formel soll also aus der ersten Spalte das Monat aus dem Datum ablesen und die dem jeweiligen Monat zugeordnete Mitteltemperatur darstellen. Ich habe stundenlang das Forum gelesen und diverse Formeln ausprobiert, mit avg ... yearmonth etc. kriegs aber einfach nicht hin.
Kann mir wer helfen? Liebe Grüße, Günther

46 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Günther, die Funktionen yearmonth() und avg() waren schon der richtige Ansatz. Um eine Übersicht der Durchschnittswerte zu bekommen, könnte man folgendermaßen vorgehen:

    1.) Eine neue Ansicht erstellen ("z. B. "Monate") 
    2.) "Spalte einblenden" --> "Funktion"
    3.) Formel: "yearmonth(DATUM)" --> "Ok"
    4.) Nach der neuen Spalte gruppieren
    5.) Für Spalte 'Temperatur' den "Durchschnitt" anzeigen lassen 

    Wenn der Durchsnittswert für jeden Tag/Datensatz angezeigt werden soll, dann könnte man statt der vorstehend beschriebenen Schritte auch im Datenformular ein Funktionsfeld erstellen und dort folgende Formel hinterlegen:

     

    let myMonat := yearmonth(DATUM);
    avg((select TABELLE where yearmonth(Datum) = myMonat).TEMPERATUR)

    Wobei die groß geschriebenen Bezeichnungen durch die tatsächlich vergebenen Tabellen- und Feldnamen ersetzt werden müssten.

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Günther. Man kann es entweder als Zusatzspalte machen:

    ---

    let myYM:=yearmonth(Datum);
    avg(select DEINETABELLENNAME[yearmonth(Datum)=myYM].Temperatur)

    ---

    oder 

    eine Jahr/Monat Spalte erstellen yearmonth(Datum), diese Spalte Gruppieren und bei der Temperaturspalte auf Mittelwert klicken. 

    Leo

    • Gunther_Schranz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hm, bin neu hier im Forum und sehe das andere Themen in Minuten beantwortet werden ... aber meine Frage nicht. Hab ich was falsch gemacht oder was falsches geschrieben? Dann sorry ...

    • Gunther_Schranz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    ah eh antworten da, entschuldigt :) habs nicht gesehen ... (refresh funtkion ist ja nicht umsonst ;)

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ich glaube, wir müssen eine Ticket-Funktion für dieses Forum einführen :-)

    • Gunther_Schranz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank für die Antworten (Leo & Copytexter) nun werd ichs nach euren Vorschlägen versuchen.

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    @Günther: Dies ist erster Linie ein User-Forum. Ob und wie schnell eine Frage beantwortet wird, hängt nicht von der Person des Fragestellers ab, sondern davon, ob gerade jemand Zeit und Lust hat, vom Schwierigkeitsgrad der Frage und von der Komplexität einer möglichen Antwort. Oft geht's relativ schnell, manchmal dauert's länger und gelegentlich bleibt eine Frage auch unbeantwortet.

     

    Und ja, eine Ticket-Funktion wäre nicht schlecht. ;)

    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    ... zum Forum würden mir noch ganz andere, verbesserungswürdige Dinge einfallen :-)

     

    zum OP: 2 Stunden Reaktionszeit wären definitiv noch flott...

     

    lg, Torsten

    • Gunther_Schranz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Juhu und vielen Dank :)

    Habs mit:

    let myYM:=yearmonth(Datum);
    avg(select DEINETABELLENNAME[yearmonth(Datum)=myYM].Temperatur)

    zum Laufen gebracht.

    Schön langsam lerne ich die Struktur kennen ... ist es auch möglich folgende Werte "ausspucken" zu lassen?

    1. Wochentag, 2. Woche, 3. Monat

    Die Struktur sollte ja diesselbe sein bei jedem Wert nur eben die angegebenen Variablen andere? (yearmonth, yearweek?!? ...) und wie lautet die genaue Formel? Liebe Grüße

    • Gunther_Schranz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    By the way ... entschudligt bitte mein "meckern" vorhin ... ich hab vergessen zu aktualisieren, ist mir klar das manches schnell geht und manches dauert :)

    • Gunther_Schranz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Bin ja schon stolz auf meine ersten Schritte mit ninox ... habe bis jetzt alles in numbers am mac gemacht ... aber das Programm hat eben auch Grenzen. Deswegen ab sofort Bildschirmfoto 2020-03-09 um 12.01.16ninox :)

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Gute Entscheidung. Es gibt u. a. noch folgende Funktionen, die man in einem Berechnungsfeld einsetzen könnte:

    week(Datum) --> Rückgabe: Zahl

    month(Datum) --> Rückgabe: Zahl

    weekday(Datum) --> Rückgabe: Zahl

    weekdayName(weekday(Datum)) --> Rückgabe: String

    monthName(month(Datum)) --> Rückgabe: String

    Die Berechnung der Durchschnittstemperatur pro Woche könnte so funktionieren:

    let myYear := year(DATUM);
    let myWeek := week(DATUM);
    avg((select TABELLE where year(Datum) = myYear and week(Datum) = myWeek).Temperatur)

    • Gunther_Schranz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    wow danke, grenzgenial ... genau das was ich gesucht habe :) Funkt!!

    • Gunther_Schranz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Gibt es eine Formel zur Berechnung der Anzahl der aktuellen Monatstage auch?

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Günther,

    day(date(year(today()),month(today()),0))

    Leo

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    oh, Fehler:

    day(date(year(today()),month(today())+1,0))

     

    Leo

    • Gunther_Schranz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Danke Leo für die schnelle Antwort - habs eingefügt .... aber das gleich beim Februar 2018 ... der hatte demzufolge 31 Tage?!? :) 

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    today() steht für heute. Wenn du die Tage eines anderen Monats darstellen willst, musst du statt dessen das Datumsfeld ansprechen: 

     

    day(date(year(Datum),month(Datum)+1,0))

    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    today() wirft heute aus - und der März hat 31 Tage, passt also. :-)

     

    Ersetze das "today()" in Leos Formel einfach durch den Feldnamen, der das Bezugsdatum enthält...

     

    lg, Torsten

    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    drei Minuten - und gleich zwei Antworten - Challenge accepted ;-D

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Genau. DAS sollte mal jemand erfassen und statistisch auswerten! ;)

    • Gunther_Schranz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Juhu funkt :) Vielen Dank für eure Bemühungen :) Macht Spass mit ninox zu arbeiten.

    • Gunther_Schranz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Na da hab ich was los getreten mit meinem meckern .... soooorrryyyyyy - will never do it again :)

    • Gunther_Schranz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Es wird es wird ... und nach 30 min Forum durchsuchen ... melde ich mich wieder ... wie bekomme ich die monatliche Summe einer Spalte (Verbrauch) dargestellt ... sum(yearmonth(Verbrauch)) ... ist es schon mal nicht ... ?!?

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    sum((select TABELLE).Verbrauch)

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 46Antworten
  • 4106Ansichten