Jump to content
  • 0

Sum van de hoogste waarden


martindes

Question

Posted

Ik heb een calculatie nodig voor mijn Formule 1 database om uit een reeks een aantal hoogste waardes bij elkaar op te tellen.

 

Bijvoorbeeld.

 

In bepaalde seizoenen hadden ze 16 races maar telde alleen de 10 beste resultaten.

 

In andere seizoenen hadden ze 10 races en telde alleen de beste 6 resultaten.

 

Kan iemand mij uitleggen welke calculatie methode ik hiervoor nodig heb?

 

Met vriendelijke groet en dank voor de antwoorden.

9 answers to this question

Recommended Posts

  • 0
Posted

totalen.fmp12Ik zou een lijst maken van alle uitslagen, deze sorteren, hoogste eerst en dan de eerste 6 of 10 bij elkaar optellen.

 

de formule voor de hoogste 10 zou dan worden:

(waarbij ik de custom functie 'SortList' gebruik voor het sorteren))

 

Let([

l=List(waardes::waardes);

s=LeftValues(SortList ( l ; "des" ; "Number" );10)

];

 

Evaluate(Substitute(s;"¶";"+")&"0")

 

)

 

Groet, Ruben

  • 0
Posted

Dank je.

 

Misschien kan je even kijken naar mijn voorbeeld in het andere topic wat ik heb geplaatst over sum in de portalen.

 

Want in dat voorbeeld zou het dan moeten staan.

 

Voor elk seizoen moet er nl een mogelijkheid zijn om die totalen in te vullen.

  • 0
Posted
Ik heb een calculatie nodig voor mijn Formule 1 database om uit een reeks een aantal hoogste waardes bij elkaar op te tellen.

 

Bijvoorbeeld.

 

In bepaalde seizoenen hadden ze 16 races maar telde alleen de 10 beste resultaten.

 

In andere seizoenen hadden ze 10 races en telde alleen de beste 6 resultaten.

 

Kan iemand mij uitleggen welke calculatie methode ik hiervoor nodig heb?

 

Met vriendelijke groet en dank voor de antwoorden.

 

Je kan met ExecuteSQL gemakkelijk de waarden krijgen die je zoekt. Als je dat in een let-functie combineert met een sum() en een evaluate(), dan wordt het ongeveer zoals dit:

Let ( [ 
    n = 6 ; //vul hier het aantal waarden dat je wilt gebruiken in
    seizoen = SeizoenID ; 
    coureur = CoureurID ; 
    query = "SELECT \"Punten\" " & 
                "FROM \"Deelnames\" " & 
                "WHERE \"Seizoen\"=? " & 
                "AND \"Coureur\" = ? " & 
                "ORDER BY \"Punten\" DESC " & 
                "FETCH FIRST " & n & " ROWS ONLY"
] ; 
    Evaluate ( 
        "SUM(" & ExecuteSQL ( query ; "" ; ";" ; seizoen ; coureur ) & ")"
)

Je moet zelf nog wel even de juiste veldnamen en tabelnaam invullen, maar je hoeft geen relaties te leggen etc.

  • 0
Posted

Dank jullie wel. Het ExecuteSQL script krijg ik trouwens niet werkend. Ik ga me daar eerst in verdiepen hoe dat werkt zodat ik dat eventueel ook kan gebruiken.

 

Ik ga het nog complexer maken.

 

Er zijn races geweest waar de eerste plaats gedeeld werd. De punten van die eerste plaats werden dan ook gedeeld.

 

Dus bijvoorbeeld

1. Fangio 9 punten

2. Farina 6 punten

3. Villoresi 3 punten

 

of

 

1. Farina 4,5 punten

1. Villoresi 4,5 punten

2. Farina 3 punten

2. Ascari 3 punten

  • 0
Posted

ExecutSQL is geen script, maar een formule en wat je in het voorbeeld ziet krijg je werkend wanneer je in de tabel met de deelnames van de coureurs bent. Je moet alleen wel de veldnamen en de tabelnamen aanpassen aan jouw omgeving.

 

Het lijkt me beter voor jouw begrip van de techniek om eerst de eerste wens werkend te maken en daarna "het nog moeilijker te maken". Nu je er echter de vraag hier stelt, heb ik een tegenvraag: wat wil je nou eigelijk weten cq wat is jouw eigen definitie van "het beste resultaat"? Is dat het hoogste aantal punten of is dat de hoogst behaalde plaats in een race? Uit het antwoord volgt de vraag die je aan de database moet stellen.

  • 0
Posted

@menno

 

Het gaat om de beste resultaten uit een reeks.

 

Bijvoorbeeld.

1e plaats = 10 punten

2 plaats = 6 punten

3 plaats = 4 punten

 

Bij deze reeks

1, 1, 2, 3, 3, 1, 1, 2.

Totaal 60 punten

Ik moet in dat geval de beste 6 resultaten hebben. De twee 3e plaatsen vallen in dit geval af.

Totaal 52 punten

 

Ik heb alleen de punten nodig.

  • 0
Posted

Ik heb in jouw voorbeeld even de klassementsplaats in de tabel "Race_LineItems" toegevoegd (kolom = plaats) en ingevuld. In diezelfde tabel heb ik ook de kolom "SeizoenResultaat" met de ongeïndexeerde Let/Evaluate/ExecuteSQL berekening.F1_SQL.zip

  • 0
Posted

@menno

Ik ga me eerst maar eens verdiepen in de ExecuteSQL materie.

 

Ik ben erg dankbaar voor de antwoorden en voorbeelden die ik krijg van iedereen maar ik wil het uiteindelijk uiteraard ook begrijpen hoe het werkt.

 

Dank in ieder geval voor je antwoord.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...