---
title: "Sum() blir för stort/mycket"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/84316-sum-blir-för-stort-mycket"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "ZeTa"
published: "2003-08-15T16:49:28.000Z"
updated: "2003-08-17T18:52:39.000Z"
replies: 12
views: 353
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/84316-sum-blir-för-stort-mycket"
---

# Sum() blir för stort/mycket

## #1 — ZeTa, 2003-08-15T16:49Z

Här är min SQL:

SELECT accounts.ID, accounts.owner, accounts.race, (Sum(citys.s1) + Sum(armys.s1)) AS sumS1, (Sum(citys.s2) + Sum(armys.s2)) AS sumS2, (Sum(citys.s3) + Sum(armys.s3)) AS sumS3, accounts.kingdomID, Count(citys.ID) AS cCity 

FROM accounts, armys, citys 

WHERE accounts.ID = citys.ownerID AND accounts.ID = armys.ownerID GROUP BY accounts.ID, owner, race, kingdomID 

ORDER BY (Sum(citys.s1) + Sum(citys.s2) \* 2 + Sum(citys.s3) \* 3 + Sum(armys.s1) + Sum(armys.s2) \* 2 + Sum(armys.s3) \* 3) DESC

sumS1, sumS2 och sumS3 blir för stora! Tror Sum(armys.\*) blir räknat gånger antal Count(citys.ID) tror jag.. typ :OO 

HJÄLP!

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

## #2 — aasah, 2003-08-15T16:59Z

Jaha, och vad vill du göra? :q

Dessutom kommer ju din Order by-klausul att innehålla ett numeriskt värde. Hur ska du kunna ordna något efter en siffra?

Efter Order by ska stå den/de kolumn(er) du vill ordna resultatet efter.

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

## #3 — ZeTa, 2003-08-15T17:32Z

> **aasah skrev:**
>
> Jaha, och vad vill du göra?

Jag vill att sumS1 ska bli summan av antalet s1 i armys och citys. Inte som det är nu att jag får produkten.

> **aasah skrev:**
>
> Dessutom kommer ju din Order by-klausul att innehålla ett numeriskt värde. Hur ska du kunna ordna något efter en siffra?

Det går alldeles utmärkt att ordna efter en siffra! 1 kommer före 3 och 51 kommer före 52 osv.

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

## #4 — ZeTa, 2003-08-15T17:36Z

Scripted som jag använder SQL-satsen till funkar, bara det att sumS1 blir typ 500 gånger större än det ska vara :p

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

## #5 — ZeTa, 2003-08-15T18:09Z

cCity blir också multiplicerat med antalet armys-rader. Annars skulle jag kunna löst det på ett styggt sätt :P

```
 (Sum(citys.s1) + Sum(armys.s1)/Count(citys.ID)) AS sumS1
```

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

## #6 — ZeTa, 2003-08-15T23:37Z

anyone?

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

## #7 — LarsG, 2003-08-16T17:35Z

Dela upp det i två frågor. En med count på city och en med summering.

> Efter Order by ska stå den/de kolumn(er) du vill ordna resultatet efter.

Nej, det stämmer inte. Det går att ange uttryck i en order by.

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

## #8 — ZeTa, 2003-08-16T20:36Z

> Dela upp det i två frågor. En med count på city och en med summering.

Jo, jag fick göra sö och sen dela med count på citys :p
Så det blir rätt värden nu, även fast det blir stygga värden med summeringe. Fast skit samma, huvudsaken det funkar :)

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

## #9 — aasah, 2003-08-17T11:55Z

> **LarsG skrev:**
>
> > **aasah skrev:**
> >
> > Efter Order by ska stå den/de kolumn(er) du vill ordna resultatet efter.
>
> Nej, det stämmer inte. Det går att ange uttryck i en order by.

Jag är ledsen om jag sa något som var felaktigt.  :r Det var inte med flit.

Men, jag trodde att när man skrev tex:
Select a, b, c .... order by 2
Så blev det samma som att skriva 
Select a, b, c .... order by b - i det här fallet.

Uppenbarligen har jag fel, så vad gäller? :q Och kan någon ange ett exempel med ett uttryck av ZeTas typ i order by, vilket förklarar vad som händer och hur det funkar med numeriska uttryck där? :q Skulle uppskattas!

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

## #10 — emission, 2003-08-17T12:26Z

Nja, helt fel har du inte. Om man skriver en numerisk literal (t.ex. ORDER BY 2)
i ORDER BY så tolkas den som en resultatkolumnsposition, precis som du angav. Jag har för mig att detta inte är helt rumsrent enligt SQL-standarden, men det är så det funkar i Access och MS SQL Server. 

ORDER BY 2 

är alltså **inte** samma sak som

ORDER BY 2\*1

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

## #11 — aasah, 2003-08-17T13:20Z

> **emission skrev:**
>
> Nja, helt fel har du inte. Om man skriver en numerisk literal (t.ex. ORDER BY 2)
> i ORDER BY så tolkas den som en resultatkolumnsposition, precis som du angav. Jag har för mig att detta inte är helt rumsrent enligt SQL-standarden, men det är så det funkar i Access och MS SQL Server. 
> 
> ORDER BY 2 
> 
> är alltså **inte** samma sak som
> 
> ORDER BY 2\*1

OK, tack! :) Och bra att veta att det inte var helt fel. Men... vad innebär Order by 2\*1 då? Ett exempel skulle verkligen uppskattas.

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

## #12 — LarsG, 2003-08-17T14:59Z

Att använda en siffra för att ange en kolumn i select-listan försvann ur standarden i och med SQL 99. Då tillät man att man i stället använde ett kolumnalias

```
select sum(a) as s, c from t group by c order by s desc
```

Ovanstående är alltså det rekommenderade sättet men det fungerar t.ex. inte i access.

Att använda en konstant i order by innebär enligt SQL 99 i princip ingenting eftersom det blir samma värde för alla poster och därmed inte påverkar sorteringsordningen alls.

Däremot om man använder t.ex.

```
select a,b from t order by a+b
```

så blir värdet (eventuellt) olika för olika poster och kan därmed påverka sorteringsordningen.

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

## #13 — aasah, 2003-08-17T18:52Z

Tack LarsG för hela genomgången! :) 

> **LarsG skrev:**
>
> ...Däremot om man använder t.ex.
> 
>
>
> ```
> select a,b from t order by a+b
> ```
>
> 
> 
> så blir värdet (eventuellt) olika för olika poster och kan därmed påverka sorteringsordningen.

Om

```
a   b
1   3
2   1
3   1
```

Så kommer det enligt satsen ovan ut i ordningen:

```
a+b = 3
a   b
2   1

a+b = 4
a   b
1   3
3   1
```

Har jag fattat rätt då? :q

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/84316-sum-blir-för-stort-mycket
