---
title: "Medelvärde"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/119972-medelvärde"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "westman"
published: "2005-01-12T16:37:23.000Z"
updated: "2005-12-09T23:08:12.000Z"
replies: 11
views: 801
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/119972-medelvärde"
---

# Medelvärde

## #1 — westman, 2005-01-12T16:37Z

Jag vill räkna ut medelåldern på studenterna vid varje universitets ort.

Tabellerna:

\* student (här finns info om alla studenter)
\* gar (info om vad studenterna går på för kurs)
\* kurs (info om kurserna)
\* inst (info om institutionerna)

Jag tycker något i denna stil borde funka:

```
SELECT ort, AVG(SELECT 2004 - född AS ålder FROM student) as MedelÅlder
from inst;
```

 
men det gör det inte...

Säg till om ni vill veta attributen i tabellerna.

(Access 2003)

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

## #2 — LarsG, 2005-01-12T16:41Z

Det är relevant att veta hur inst och student är relaterade. 

Frågan blir enligt

```
select ort, avg(2004-född)
from inst join student on inst.id = student.instid
group by ort
```

där du får byta 

```
on inst.id = student.instid
```

så att det passar med dina tabeller.

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

## #3 — westman, 2005-01-12T16:53Z

hmm, nej nu får jag syntax-fel...
(självklart ändrade jag "id" till "nr" osv)

Så här ser tabellerna ut:

**student** 
pnr (nyckel)
född

**inst** 
instnr (nyckel)
ort

**kurs** 
kursnr (nyckel)
instnr (nyckel referens inst)

**gar** 
pnr (nyckel referens student)
kursnr (nyckel referens kurs)

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

## #4 — LarsG, 2005-01-12T17:22Z

Med den modellen blir frågan mer komplex

```
select ort, avg(2004-född)
from ((inst inner join kurs on inst.instnr = kurs.instnr)
inner join gar on kurs.kursnr = gar.kursnr)
inner join student on gar.pnr = student.pnr
group by ort
```

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

## #5 — westman, 2005-01-12T17:27Z

```
select ort, avg(2004-född)
from ((inst inner join kurs on inst.instnr = kurs.instnr)
inner join gar on kurs.kursnr = gar.kursnr)
inner join student on gar.pnr = student.pnr
group by ort;
```

 

funkar ej... "Ort kan referera till mer än en tabell..."

Jag testade skriva "select inst.ort, avg(..." men det fungerar inte heller. 

Btw, är det verkligen så här krångligt, tar vi oss inte hals över huvud nu..?

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

## #6 — LarsG, 2005-01-12T18:33Z

```
select inst.ort, avg(2004-född)
from ((inst inner join kurs on inst.instnr = kurs.instnr)
inner join gar on kurs.kursnr = gar.kursnr)
inner join student on gar.pnr = student.pnr
group by inst.ort
```

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

## #7 — westman, 2005-01-12T19:36Z

ah, jag glömde ändra till inst.ort i slutet..
tack för din hjälp LarsG!

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

## #8 — westman, 2005-01-12T20:03Z

för att göra det enkelt så tar jag ytterligare en fråga på denna tråd.

```
SELECT namn, count(Gar.kursnr) AS samtidigt
FROM Student, Gar
WHERE Student.pnr=Gar.pnr
GROUP BY namn
HAVING count(Gar.kursnr)>2;
```

 
Koden ovan tar ut *namnen* på de som läser minst 2 kurser samtidigt. Hur skall jag göra ifall jag istället vill få ut *hur många* det är.

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

## #9 — LarsG, 2005-01-12T20:24Z

```
SELECT count(*) from (select 1
FROM Student, Gar
WHERE Student.pnr=Gar.pnr
GROUP BY namn
HAVING count(Gar.kursnr)>2
) dt
```

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

## #10 — westman, 2005-01-12T21:44Z

tack, d funkar perfekt

måste fråga vad "1" och "dt" står för?

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

## #11 — LarsG, 2005-01-13T08:30Z

1 är ett godtyckligt värde eftersom det är enbart antalet poster som är intressant. 

dt står för delirium tremens

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

## #12 — Travoni, 2005-12-09T23:08Z

Vad står "delirium tremens" för då?
<http://susning.nu/Delirium_tremens>

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/119972-medelvärde
