0

max() - Hilfe stecke fest 😵💫

Hallo zusammen,

irgendwie schaffe ich es nicht den höchsten Wert eines Array herauszufinden, und doktere nun schon längere Zeit daran herum..

Folgendes Szenario:

let myArray1 := select Tabelle

let myArray2 := For i in myArray1 do i.(sum(Wert1,Wert2,Wert3) end

max(myArray2)

Ergebnis: null?!

 

Worin liegt mein Denkfehler? Eigentlich müsste doch mein Array2 ein Array mit Auflistung der Werte ergeben aus der ich dann den Max errechnen kann?

 

Danke und Gruß Benjamin

6 Antworten

null
    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    let myArray1 := (select Tabelle3);
    let vArray2 := for i in myArray1 do
            sum(i.Wert1, i.Wert2, i.Wert3)
        end;
    text(max(vArray2))

      • Benjamin_Kunzmann_pr
      • vor 1 Jahr
      • Gemeldet - anzeigen

      UweG  danke für die schnelle Anwort. 

       

      Das klappt nur leider noch nicht (mein i. steht vor sum deshalb bekomme ich die Werte aus i trotzdem)

      es klappt aber blöderweise nicht weil ich die Datensatz-Nr aus dem höchsten Wert brauche.

      ich habe deshalb die Record ID mit reingeschrieben.

      text(i.(sum(Wert1,Wert2,Wert3)+" "+Nr)

      Ohne ein zusätzliches Textzeichen erkennt max() problemlos den höchsten Wert. Sobald ich das Leerzeichen und Nr hinzufüge erhalte ich kein Ergebnis mehr.

       

      Ziel ist, ich brauche aus dem Array1 den Datensatz mit dem höchsten errechneten Wert. Den Umweg über eine temporäre Untertabelle möchte ich nach Möglichkeit vermeiden und hoffe es gibt eine Idee die Record ID innerhalb des Codes zu ermitteln und auszugeben. 

       

      LG

      • UweG
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Benjamin Kunzmann (pr) Wenn du die Record-ID des Records mit der größten Summe benötigst, kannst du folgendes Script verwenden:

      let p := (select Tabelle);
      let vArray2 := for i in p do
              sum(i.Wert1, i.Wert2, i.Wert3)
          end;
      first(p[sum(Wert1, Wert2, Wert3) = max(vArray2)]).Nr

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Oder:


    text(max(vArray2))+" "+text(first(p[sum(Wert1, Wert2, Wert3) = max(vArray2)]).Nr)

    um deine Schreibweise beizubehalten.

      • UweG
      • vor 1 Jahr
      • Gemeldet - anzeigen

      UweG Noch eine Anmerkung:
      Solange es nur einen max-Wert gibt, funktioniert es mit der zugehörigen Record-ID. Sobald aber mehrere Record's mit dem selben max-Wert existieren, würde es auch mehrere Record-ID's geben und da wird nur die ID zurückgegeben, die als erstes übereinstimmt.
      Mit folgendem Code kann man dies überprüfen:

      cnt(p[sum(Wert1, Wert2, Wert3) = max(vArray2)])

      Wenn man bei mehreren Records mit gleichem Max-Wert die ID's benötigt, muss man ein weiteres Array erzeugen.

      let vArray3 := for y in p[sum(Wert1, Wert2, Wert3) = max(vArray2)] do
               y.Nr
          end

    • Benjamin_Kunzmann_pr
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Moin Uwe,

    danke für deine wertvollen Impulse mit denen ich nun auch zum Ziel gekommen bin!

Content aside

  • Status Answered
  • vor 1 JahrZuletzt aktiv
  • 6Antworten
  • 102Ansichten
  • 2 Folge bereits