---
title: "Problem med att \"Räkna\" i SQL"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/174793-problem-med-att-räkna-i-sql"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "saw"
published: "2008-10-16T09:44:16.000Z"
updated: "2008-10-17T12:43:17.000Z"
replies: 20
views: 788
page: 1
pages: 2
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/174793-problem-med-att-räkna-i-sql"
---

# Problem med att "Räkna" i SQL

_Sida 1 av 2._

## #1 — saw, 2008-10-16T09:44Z

JAg har en liten fin sql som i grunden fungerar bra;
\[kod\]
SELECT Count(Listan.Ratt) AS Antal, Listan.Ratt AS RÃ¤tt FROM Listan 
GROUP BY Listan.Ratt ORDER BY Listan.Ratt DESC
\[kod\]
Jag får då ut ett resultat som ser ut så här:

*10 = 1222
9 = 203
8 = 2200*
Nu ville jag försöka att "få tag" på t ex alla som har tio rätt, och jag antar att
man bör göra det i sql:en och använda en psedonym.
Tacksam för förslag.
Jag vet att jag skulle kunna göra 10 st sql men målet är ju att kunna göra 
detta i en sql.

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

## #2 — jme, 2008-10-16T10:15Z

...

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

## #3 — Fredde Mannen, 2008-10-16T11:13Z

Hur ser tabellerna ut som du använder för att veta vilka som är "användare", samt tabellen för listan med antalet rätt, samt hur ser deras relation ut?

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

## #4 — jme, 2008-10-16T11:27Z

Kolla <http://www.techonthenet.com/sql/having.php>

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

## #5 — saw, 2008-10-16T14:09Z

Detta är en tabell utan relationer(Access) och består av följande fällt
id
namn
svar1
svar2 osv till svar10
Ratt
Fel
Tid
Datum

Det jag vill göra är att grafiskt visa i procent hur manga som har svarat 1 rätt,
2 rätt osv.

Som jag nämnde inledningsvis så fungerar den sql:en men jag kan ju inte 
hantera de enskikkda rätten(10, 9 osv).

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

## #6 — überfuzz, 2008-10-16T16:10Z

Krångla inte till det så mycket. Gör en for-loop och query:a för varje antal rätt.

```php
for ($i = 0; $i <= 10; $i++) {
    query = "SELECT COUNT(något) AS antal_personer_med_poäng FROM tabell WHERE antal_rätt = '".$i."'";
    //behandla queryn.

echo "Vi hade ".$query_result['antal_personer_med_poäng']." st som hade ".$i." poäng rätt.";
}
```

Utskriften och behandlingen av queryn är inte direkt klar, men det ger dig nog en idé om hur du kan lösa det. Tips, stoppa in resultatet i en array, så kan du jobba med den när du ska skriva ut listan.

Edit: rättade stavfel.

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

## #7 — saw, 2008-10-16T16:21Z

Eftersom all databashantering sker via en web service, så tänkte jag att det skulle vara dumt med många databasanrop, annars så kunde jag ju göra tio stycken...

Jag funderade på en sql ung så här:

```
SELECT
(
SELECT Count(Listan.Ratt) AS Antal10, Listan.Ratt AS ten 
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=10
)
,
(
SELECT Count(Listan.Ratt) AS Antal9, Listan.Ratt AS nine 
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=9
)
,
(
SELECT Count(Listan.Ratt) AS Antal8, Listan.Ratt AS eight 
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=8
)
,
(
SELECT Count(Listan.Ratt) AS Antal7, Listan.Ratt AS seven 
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=7
)
,
(
SELECT Count(Listan.Ratt) AS Antal6, Listan.Ratt AS six 
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=6
)
,
(
SELECT Count(Listan.Ratt) AS Antal5, Listan.Ratt AS five 
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=5
)
,
(
SELECT Count(Listan.Ratt) AS Antal4, Listan.Ratt AS four 
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=4
)
,
(
SELECT Count(Listan.Ratt) AS Antal3, Listan.Ratt AS tree 
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=3
)
,
(
SELECT Count(Listan.Ratt) AS Antal2, Listan.Ratt AS two 
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=2
)
,
(
SELECT Count(Listan.Ratt) AS Antal1, Listan.Ratt AS one 
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=1
)
,
(
SELECT Count(Listan.Ratt) AS Antal0, Listan.Ratt AS zero 
FROM Listan
GROUP BY Listan.Ratt
HAVING(Listan.Ratt)=0
)
ORDER BY Listan.Ratt DESC;
```

Denna fungerar dock inte jag får syntaxfel operator saknas. Är jag ute och
cyklar?

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
När jag ser resultatet av mina ansträngningar så får det mig att fundera
mera på vad überfuzz  skrev.

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

## #8 — Peter S, 2008-10-16T16:35Z

Med din första fråga får du ju ut hur många som har 1, 2, 3, o.s.v. rätt.

Nu vill du även ta reda på hur många som svarat rätt på respektive fråga? Då får du ställa en SQL-fråga per svar:

```
select count(*) from listan where svar1 = true
```

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

## #9 — überfuzz, 2008-10-16T16:46Z

> **Peter S skrev:**
>
> ```
> select count(*) from listan where svar1 = true
> ```

Peter, den där true-grejen, jag förstår inte riktigt hur den fungerar? Måste han en binär typ på den (svar1 alltså)?

Vidare så kan jag inte så här på rak arm se hur man går från tex antal rätt på fråga ett bland alla tävlande till hur många som hade ett rätt när de tävlade.

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

## #10 — Peter S, 2008-10-16T17:02Z

> **überfuzz skrev:**
>
> Peter, den där true-grejen, jag förstår inte riktigt hur den fungerar? Måste han en binär typ på den (svar1 alltså)?
> 
> Vidare så kan jag inte så här på rak arm se hur man går från tex antal rätt på fråga ett bland alla tävlande till hur många som hade ett rätt när de tävlade.

Jag utgick från att han sparar huruvida svaret är rätt eller inte i svarX. Det kan givetvis visa sig vara ett felaktigt antagande eftersom varken fältbeskrivning eller exempel på tabellinnehåll givits.

Om ovanstående visar sig vara ett korrekt antagande får man ju, genom att räkna alla med svar1 = true, reda på hur många som har svarat rätt på den första frågan. Hur många som totalt har 1 rätt verkar man få genom att gruppera på Ratt och utföra en count.

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

## #11 — saw, 2008-10-16T17:11Z

För att specifera lite mera så är det i fältet Ratt som jag har räknat hur många 
rätt respektive tävlande har. I de andra fälten så har jag sparat svaren.
I dag så kanske jag tycker att denna tabellen bara behövde vara id, namn, antal_Ratt,
tid och datum, men gjort är gjort.

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

## #12 — Peter S, 2008-10-16T17:14Z

Hur vet man om värdet i svarX är rätt?

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

## #13 — saw, 2008-10-16T17:30Z

Innan jag sparar i databasen så har jag kollat det och sedan så sammanfattar jag alla 
svaren i Rätt.
Frågesporten ligger på <https://www.saw.se> under aktivitet/musikfrågan.

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

## #14 — Peter S, 2008-10-16T17:32Z

Ja, då blir det kanske svårt att veta hur många som svarat rätt på varje fråga. Såvida du inte byter ut "true" mot något annat, statiskt värde.

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

## #15 — saw, 2008-10-16T17:44Z

Min sql fungerar ju och jag kan koppla den mot en gridview, men jag ville leka lite själv
med den

```
SELECT Count(Listan.Ratt) AS Antal, Listan.Ratt AS RÃ¤tt FROM Listan 
GROUP BY Listan.Ratt ORDER BY Listan.Ratt DESC
```

Här ser du att jag använder listan.Ratt och sedan gruppera.

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

## #16 — Peter S, 2008-10-16T17:47Z

Ja, och då får du ut hur många som haft 1, 2, 3, o.s.v. rätt.

Vad var frågan?   :P

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

## #17 — saw, 2008-10-16T18:04Z

Jo vad jag skulle vilja är att "få tag" på t ex alla som har 10 rätt och sne nästa på 9 
rätt osv för att kunna göra ett stapeldiagram.

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

## #18 — Peter S, 2008-10-16T18:09Z

Alla som har 10 rätt:

```
select * from listan where ratt = 10
```

...eller allihop:

```
select * from listan order by ratt desc
```

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

## #19 — jme, 2008-10-16T18:18Z

Jag skulle iaf inte köra med åäö i aliaser...

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

## #20 — saw, 2008-10-16T19:03Z

nja det är ju inte så lätt, då måste jag köra 10 sql:er, och det tänkte jag försöka att undvika.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/174793-problem-med-att-räkna-i-sql  
Nästa sida: https://www.webforum.nu/amne/databaser-sql/174793-problem-med-att-räkna-i-sql/page2.md
