---
title: "hjälp med statistik"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/165349-hjälp-med-statistik"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "The_Hulk"
published: "2007-10-11T14:45:56.000Z"
updated: "2007-10-17T11:00:36.000Z"
replies: 3
views: 435
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/165349-hjälp-med-statistik"
---

# hjälp med statistik

## #1 — The_Hulk, 2007-10-11T14:45Z

Jag samlar ihop lite statistik i tabell, frågan är om jag ska markerar med ett status-fält vilket som är det senaste värdet eller bara ha ett timestamp-fält.

Jag vill kunna plocka ut de aktuella värdena för flera objekt på en gång men vill även kunna titta djupare på ett objekt och se värden längre tillbaka i tiden.

Kan man hämta det senaste värdet för alla objekt med en SQL-fråga?

tabell: stats

```
stat_id | obj_id | obj_val | stat_timestamp | status
--------+--------+---------+----------------+-------
  1     |  1     |   5     | 1              |   0   
  2     |  2     |   4     | 1              |   0   
  3     |  3     |   5     | 1              |   0   
  4     |  1     |   4     | 2              |   0   
  5     |  2     |   6     | 2              |   0   
  6     |  3     |   5     | 2              |   0   
  7     |  1     |   6     | 3              |   0   
  8     |  2     |   5     | 3              |   1   
  9     |  3     |   4     | 3              |   1   
 10     |  1     |   5     | 4              |   1
```

jag vill få ut de här värdena

```
stat_id | obj_id | obj_val | stat_timestamp | status
--------+--------+---------+----------------+-------
  8     |  2     |   5     | 3              |   1   
  9     |  3     |   4     | 3              |   1   
 10     |  1     |   5     | 4              |   1
```

Frågan är om jag behöver status-fältet eller kan jag få ut värdena på något annat sätt genom att ta det högsta värdet på stat_timestamp var varje obj_id?

Hoppas ni förstår vad jag menar.

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

## #2 — LarsG, 2007-10-11T15:23Z

```
select <kolumner>
  from stats
 where stat_timestamp =
  (select max(stat_timestamp)
      from stats as s
     where s.obj_id = stats.obj_id)
```

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

## #3 — The_Hulk, 2007-10-12T07:00Z

perfekt, fungerade precis som jag ville.
Såg att jag glömde nämna vilken databas jag använde. Det gällde MySQL 5.0.27.

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

## #4 — The_Hulk, 2007-10-17T11:00Z

Hmm,det fungerar men när man har ett par tusen poster i tabellen så börjar det gå långsamt.
Låt oss säga att jag har 5 olika värden för 1000 olika objekt, då kommer det att ta väldigt lång tid. 
Värdena uppdateras 1-2ggr/dag, kanske är värt att ha med ett extra fält som anger om det är senaste värdet eller ej. när man lägger till nytt värde för ett objekt så sätter man den här flaggan till 0 på de gamla objekten. nackdelen är att man då måste göra 1000 extra sql-frågor.

Alternativt kan vara att man sätter flaggan till 2 när man lägger in det nya värdet och sen när man är klar med alla objekt så ändrar man de som har 1 till 0 och de som har 2 till 1. då behövs det bara två extra SQL-frågor.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/165349-hjälp-med-statistik
