---
title: "Klurig SQL fråga?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/140676-klurig-sql-fråga"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Sjodahl"
published: "2006-01-11T13:15:20.000Z"
updated: "2006-01-11T22:58:31.000Z"
replies: 16
views: 722
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/140676-klurig-sql-fråga"
---

# Klurig SQL fråga?

## #1 — Sjodahl, 2006-01-11T13:15Z

Hej!

Vill hämta ut något enligt följande:

```
SELECT USERID, sum(ANTAL) FROM traning_resultat GROUP BY USERID ORDER BY ANTAL
```

Men blir inte helt rätt, får ut allt men får det inte sorterat efter ANTAL. (går väl att sortera vektorn i efterhand, men vill ha det redan i SQL frågan om det går)

```
tbl_resultat:
ID
USERID
DATUM
AKTIVITETSID
ANTAL
```

Det jag vill ha ut är alla ANTAL ihop summerade för varje USERID och få det i storlekts ordning ;)

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

## #2 — @nders, 2006-01-11T13:19Z

<http://www.webforum.nu/showthread.php?t=135903>

Vad gäller det för dbms? Access? Prova då *order by 2 desc*.

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

## #3 — Sjodahl, 2006-01-11T13:37Z

mysql

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

## #4 — Sjodahl, 2006-01-11T13:42Z

fungerar fin fint, vad gör order by "2" igentligen ? eller menas det bara det andra värdet?

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

## #5 — @nders, 2006-01-11T13:42Z

Det andra fältet / värdet / uttrycket i select-listan.

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

## #6 — Sjodahl, 2006-01-11T21:55Z

Den löste det problemet, men nu vill jag ha den ännu mer "avancerad" ;)

Kanske borde göra en ny tråd?

```
tbl_resultat:
ID
USERID
DATUM
AKTIVITETSID
ANTAL
```

Det jag vill ha ut är alla ANTAL ihop summerade för varje USERID och få det i storlekts ordning. **Men vill även för varje rad där AKTIVITETSID=2 så skall man ta ANTALET\*2**

Kanske inte är så bra förklarat, gör en ny förklaring annars ;)

Går det att använda IF satser i SQL tro?

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

## #7 — aasah, 2006-01-11T22:20Z

> **Sjodahl skrev:**
>
> Går det att använda IF satser i SQL tro?

Ja, men hur/om det funkar ihop med en GROUP BY har jag ingen koll på, tyvärr. Så antingen får du vänta på nästa svar eller söka på IF i detta forum. 

Första biten blir i alla fall:

```
tbl_resultat:
ID
USERID
DATUM
AKTIVITETSID
ANTAL

//Om ANTAL = 2 ska vara med i summan
SELECT USERID, SUM(ANTAL) AS TotAntal FROM tbl_resultat 
GROUP BY USERID
ORDER BY TotAntal ASC

//Annars
SELECT USERID, SUM(ANTAL) AS TotAntal FROM tbl_resultat 
WHERE ANTAL <> 2
GROUP BY USERID
ORDER BY TotAntal ASC
```

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

## #8 — Sjodahl, 2006-01-11T22:26Z

Nja, hade tänkt baka in "AKTIVITETSID" med när det är lika med 2 så skall man ta ANTAL ggr 2 med ;)

Alltså där WHERE \<\> 2, skall typ vara IF istället hehe. 
Hittar inget om if satsar i SQL.

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

## #9 — Peter S, 2006-01-11T22:32Z

```
SELECT USERID, SUM(ANTAL * if(aktivitetsid = 2,2,1)) AS TotAntal FROM tbl_resultat 
GROUP BY USERID
ORDER BY TotAntal ASC
```

?

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

## #10 — Sjodahl, 2006-01-11T22:39Z

Vad gör exakt denna raden?

```
SUM(ANTAL * if(aktivitetsid = 2,2,1)
```

Om aktivitetsid = 2 eller 1 så ggr den med 2?

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

## #11 — Peter S, 2006-01-11T22:40Z

Om aktivitetsid = 2 returneras 2, annars 1.

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

## #12 — Sjodahl, 2006-01-11T22:42Z

aha.. om jag vill kolla om den är lika med ett par olika värden?

if(aktivitetsid = (3 \|\| 4 \|\| 6),2,1))

eller så enkelt är det inte?
hehe nu är jag ute på djupvatten känns det som ;)

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

## #13 — LarsG, 2006-01-11T22:50Z

Använd inte if. Använd case.

Använd inte \|\| . Använd or

```
  case when aktivitestid in (3,4,6) then 2 else 1 end
```

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

## #14 — Peter S, 2006-01-11T22:53Z

> **LarsG skrev:**
>
> Använd inte if. Använd case.

Är det för att IF inte är standardiserat, till skillnad från CASE?

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

## #15 — Sjodahl, 2006-01-11T22:53Z

Fungerar strålande!
Tackar för alla snabba svar.

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

## #16 — LarsG, 2006-01-11T22:57Z

> Är det för att IF inte är standardiserat, till skillnad från CASE?

Svar ja.

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

## #17 — Peter S, 2006-01-11T22:58Z

> **LarsG skrev:**
>
> Svar ja.

Vielen dank!  :bire

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/140676-klurig-sql-fråga
