---
title: "Poängformel"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/77662-poängformel"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "fredrik99"
published: "2003-05-21T15:01:11.000Z"
updated: "2003-05-23T14:48:08.000Z"
replies: 11
views: 306
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/77662-poängformel"
---

# Poängformel

## #1 — fredrik99, 2003-05-21T15:01Z

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?

Permalänk: https://www.webforum.nu/p/77662

## #2 — LarsG, 2003-05-21T16:12Z

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
```

Permalänk: https://www.webforum.nu/p/1057652

## #3 — fredrik99, 2003-05-21T17:09Z

Det verkade inte att funka :( Det blev samma resultat som tidigare, dvs. samtliga poäng adderades (inom samma enamn och fnamn givetvis).

Permalänk: https://www.webforum.nu/p/1057701

## #4 — LarsG, 2003-05-21T17:43Z

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
```

Permalänk: https://www.webforum.nu/p/1057740

## #5 — fredrik99, 2003-05-21T18:29Z

Det blev förändrade resultat, men det stämmer ännu inte ...

Jag har försökt att hitta mönstret, men inte lyckats :(

Permalänk: https://www.webforum.nu/p/1057790

## #6 — fredrik99, 2003-05-21T18:52Z

Har kollat lite på resultatmönstret, poängen som skrivs ut är +- 4-8 p från totala poängen (samtliga poäng).

Permalänk: https://www.webforum.nu/p/1057823

## #7 — LarsG, 2003-05-22T07:42Z

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.

Permalänk: https://www.webforum.nu/p/1058182

## #8 — fredrik99, 2003-05-22T09:25Z

> 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

Permalänk: https://www.webforum.nu/p/1058287

## #9 — LarsG, 2003-05-22T15:24Z

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
```

Permalänk: https://www.webforum.nu/p/1058574

## #10 — fredrik99, 2003-05-22T19:52Z

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

Permalänk: https://www.webforum.nu/p/1058817

## #11 — Brimba, 2003-05-23T11:30Z

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
```

Permalänk: https://www.webforum.nu/p/1059344

## #12 — fredrik99, 2003-05-23T14:48Z

Resultatet skrivs ut, men värdena i 'summapoint1' är ofantligt höga... :(

Permalänk: https://www.webforum.nu/p/1059528

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/77662-poängformel
