Jag använder följande sats för att få ut en poänglista!
SQL = "SELECT Enamn, Fnamn, Sum(Point) AS SummaPoint1 FROM 2003 GROUP BY Enamn, Fnamn ORDER BY 3 DESC"
Enligt "poängregeln" skall endast dem tio bästa poängen visas (point-fältet). Poängen skall sedan läggas ihop (sum). (Med SQL-satsen ovan läggs alla poäng i 'point'-fältet ihop)
Alltså, dem tio bästa poängen skall läggas ihop, för att sedan skrivas ut med variabeln 'summapoint1'
Hur löser jag detta enklast?
LarsGMedlem sedan dec. 200012 464 inlägg Om du använder Access så
SELECT Enamn, Fnamn, Sum(Point) AS SummaPoint1
FROM 2003 as x
GROUP BY Enamn, Fnamn
having sum(point) in (
select top 10 sum(Point) FROM 2003
where Enamn = x.Enamn
and Fnamn = x.Fnamn
order by 1 desc)
ORDER BY 3 DESC
Det verkade inte att funka :( Det blev samma resultat som tidigare, dvs. samtliga poäng adderades (inom samma enamn och fnamn givetvis).
LarsGMedlem sedan dec. 200012 464 inlägg Naturligtvis blir det det. Så här då
SELECT Enamn, Fnamn, Sum(Point) AS SummaPoint1
FROM 2003 as x
where point in (
select top 10 Point FROM 2003
where Enamn = x.Enamn
and Fnamn = x.Fnamn
order by 1 desc)
GROUP BY Enamn, Fnamn
ORDER BY 3 DESC
Det blev förändrade resultat, men det stämmer ännu inte ...
Jag har försökt att hitta mönstret, men inte lyckats :(
Har kollat lite på resultatmönstret, poängen som skrivs ut är +- 4-8 p från totala poängen (samtliga poäng).
LarsGMedlem sedan dec. 200012 464 inlägg Det finns ju ett problem med Top i Access och det är att om det finns flera resultat som är lika inom de tio så kommer dessa också med.
Man kan undvika det genom att ha med fler kolumner i order by så att det blir enbart unika värden. Hur ser din tabell ut?
Enligt det resonemanget så bordet summan kunna bli för stor men aldrig för liten om man inte kan få en negativ poäng.
Det finns ju ett problem med Top i Access och det är att om det finns flera resultat som är lika inom de tio så kommer dessa också med.
LarsG, Du har så rätt så :)
Tabell, 2003
Nr, räknare
datum, datum/tid
arr, text
typ, tal
klass, text
fnamn, text
enamn, text
langd, tal
tid, text
segrare, text
plac, tal
antal, tal
km-tid, text
split, tal
point, text
mark, text
LarsGMedlem sedan dec. 200012 464 inlägg Då borde det bli bra om man lägger till räknar-kolumnen i order by
SELECT Enamn, Fnamn, Sum(Point) AS SummaPoint1
FROM 2003 as x
where point in (
select top 10 Point FROM 2003
where Enamn = x.Enamn
and Fnamn = x.Fnamn
order by point desc, nr)
GROUP BY Enamn, Fnamn
ORDER BY 3 DESC
Det verkar bli samma resultat som innan, dvs:
Det finns ju ett problem med Top i Access och det är att om det finns flera resultat som är lika inom de tio så kommer dessa också med.
:OO
BrimbaMedlem sedan dec. 19995 875 inlägg Prova detta?
SELECT TOP 10 x.Enamn, x.Fnamn, Sum(x.Point) AS SummaPoint1
FROM 2003 x LEFT JOIN (SELECT y.Point FROM 2003 y ORDER BY y.Point, y.nr) qry1 ON x.Point=qry1.Point
WHERE (qry1.Point IS NOT NULL)
GROUP BY x.Enamn, x.Fnamn
ORDER BY 3 DESC
Resultatet skrivs ut, men värdena i 'summapoint1' är ofantligt höga... :(