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
-
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 lassenWenn 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.
-
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
-
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 ...
-
ah eh antworten da, entschuldigt :) habs nicht gesehen ... (refresh funtkion ist ja nicht umsonst ;)
-
Ich glaube, wir müssen eine Ticket-Funktion für dieses Forum einführen :-)
-
Vielen Dank für die Antworten (Leo & Copytexter) nun werd ichs nach euren Vorschlägen versuchen.
-
@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. ;)
-
... zum Forum würden mir noch ganz andere, verbesserungswürdige Dinge einfallen :-)
zum OP: 2 Stunden Reaktionszeit wären definitiv noch flott...
lg, Torsten
-
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
-
By the way ... entschudligt bitte mein "meckern" vorhin ... ich hab vergessen zu aktualisieren, ist mir klar das manches schnell geht und manches dauert :)
-
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 ninox :)
-
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)
-
wow danke, grenzgenial ... genau das was ich gesucht habe :) Funkt!!
-
Gibt es eine Formel zur Berechnung der Anzahl der aktuellen Monatstage auch?
-
Hallo Günther,
day(date(year(today()),month(today()),0))
Leo
-
oh, Fehler:
day(date(year(today()),month(today())+1,0))
Leo
-
Danke Leo für die schnelle Antwort - habs eingefügt .... aber das gleich beim Februar 2018 ... der hatte demzufolge 31 Tage?!? :)
-
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))
-
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
-
drei Minuten - und gleich zwei Antworten - Challenge accepted ;-D
-
Genau. DAS sollte mal jemand erfassen und statistisch auswerten! ;)
-
Juhu funkt :) Vielen Dank für eure Bemühungen :) Macht Spass mit ninox zu arbeiten.
-
Na da hab ich was los getreten mit meinem meckern .... soooorrryyyyyy - will never do it again :)
-
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 ... ?!?
-
sum((select TABELLE).Verbrauch)
Content aside
- vor 4 JahrenZuletzt aktiv
- 46Antworten
- 4180Ansichten