---
title: "Poängfördelning över flera topplistor"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/139086-poängfördelning-över-flera-topplistor"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Gein"
published: "2005-12-10T12:50:52.000Z"
updated: "2005-12-10T17:54:53.000Z"
replies: 4
views: 252
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/139086-poängfördelning-över-flera-topplistor"
---

# Poängfördelning över flera topplistor

## #1 — Gein, 2005-12-10T12:50Z

Lite osäker på om detta går att åstadkomma med en SQL-fråga eller om jag måste introducera skriptande.
Jag har ett gäng olika topplistor definierade i *highscore_types* med fälten *type*, *form* och *handed*. Type bestämmer ensamt en rad i tabellen. Själva rekorden ligger i tabellen *highscore* med fälten *uname*, *type*, *value* och *timestamp*.
*uname* säger vem som slagit rekord, *type* anger vilken topplista och *value* är rekordet.

Nu skulle jag vilja få ut en "Overall"-topplista där poängfördelningen ser ut som följer:
1: 16p
2: 12p
3: 10p
4: 8p
5: 5p

Svarstabellen ska innehålla uname och poäng. Alternativt, om det är mycket enklare, uname samt antal 1a-, 2a-, 3e-, 4e- och 5e-placeringar.

Kan man göra en sådan utsökning eller måste jag skripta detta? Om det går med SQL, hur ser frågan ut?
(Det gäller MySQL)

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

## #2 — LarsG, 2005-12-10T16:05Z

```
select uname,sum(value) pnts
from highscore
group by uname
order by pnts desc
```

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

## #3 — Gein, 2005-12-10T16:16Z

Förlåt, men jag var nog lite otydlig.

Det finns en hel del topplistor och vilken placering man har i topplistan ska avgöra hur mycket poäng man får.

Säg att jag ligger 1:a, 3:a och 3:a (och att det bara finns tre topplistor) då ska jag få
1\*16 + 2\*10 = 36p.

Value är bara vilket rekord man har i just den topplistan och utifrån den ska man alltså sortera tabellen för att komma fram till placeringarna. Value innehåller ingen poäng, eftersom poängen är tänkt att räknas fram.

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

## #4 — LarsG, 2005-12-10T16:29Z

> Förlåt, men jag var nog lite otydlig.

Lite?

```
select uname,sum(points) pnts
 from 
   (select uname,
       case 
      (select count(*)
         from high_score
        where value > hs.value
          and type = hs.type
          and uname <> hs.uname)
       when 0 then 16
       when 1 then 10
       else 0 end) pnts
     from highscore hs) dt
```

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

## #5 — Gein, 2005-12-10T17:54Z

> **LarsG skrev:**
>
> > Förlåt, men jag var nog lite otydlig.
>
> 
> Lite?

Ehm, ja? Ursäkta.

> **LarsG skrev:**
>
> ```
> select uname,sum(points) pnts
>  from 
>    (select uname,
>        case 
>       (select count(*)
>          from high_score
>         where value > hs.value
>           and type = hs.type
>           and uname <> hs.uname)
>        when 0 then 16
>        when 1 then 10
>        else 0 end) pnts
>      from highscore hs) dt
> ```

Tack för hjälpen.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/139086-poängfördelning-över-flera-topplistor
