---
title: "Gruppering"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/123468-gruppering"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Kristianstad"
published: "2005-03-01T14:06:06.000Z"
updated: "2005-03-02T15:58:44.000Z"
replies: 6
views: 278
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/123468-gruppering"
---

# Gruppering

## #1 — Kristianstad, 2005-03-01T14:06Z

Kolumnen IP innehåller flera IP-nummer. Vissa presenteras bara en gång, vissa presenteras flera, t.ex.

```
IP:              Datum:
111.111.111.111  2005-01-03
111.111.111.111  2005-01-03
222.222.222.222  2005-01-03
111.111.111.111  2005-01-03
222.222.222.222  2005-01-03
333.333.333.333  2005-01-03
111.111.111.111  2005-01-03
111.111.111.111  2005-01-04
```

Nu vill jag för det första endast ha från 2005-01-03, sedan vill jag att det ska presenteras så här:

```
Besök    Antal
1:       1
2:       2
3:       0
```

Jag vill alltså ha en sammanställning av hur många gånger IP-numret bara dyker upp en gång, två gånger, osv. Går det att fixa direkt i SQL?

Jag använder Access.

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

## #2 — @nders, 2005-03-01T14:10Z

```
SELECT ipnummer, count(*) as antal
GROUP BY ipnummer
ORDER BY 2 DESC
```

mvh

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

## #3 — Kristianstad, 2005-03-01T17:20Z

Jag vill ha det ytterligare, att det grupperar *count(\*) as antal*

Jag kan beskriva det lättare:

Kalle
Kalle
Göran
Göran
Ellen
Ellen
Ellen

Kalle har visats 2 ggr. Göran 2 ggr. och Ellen 3 ggr.

Det har hänt två ggr att det visats två ggr. :)

1 ggr = 0 gånger
2 ggr = 2 gånger
3 ggr = 1 gång

Går det ens?

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

## #4 — LarsG, 2005-03-01T18:16Z

Du behöver en hjälptabell för att få ut rader där det finns 0 förekomster. Det är den som heter nrTable i nedanstående och den behöver en kolumn (nr) av typen integer. Lagra värden från 1 till så många förekomster du vill kunna visa. 

```
   select nr,nvl(occ,0)
     from nrTable left outer join
   (select c,count(*) as occ
      from (select count(*) as c
              from iptable
             group by ipnummer)dt
    group by c)dt
    on nr = dt.c
   where nr between 1 and 3
```

Det är faktiskt otestat.

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

## #5 — Kristianstad, 2005-03-01T20:57Z

Hejsan Lars!

Jag fic följande felmeddelande:
Join expression not supported.

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

## #6 — LarsG, 2005-03-02T10:50Z

Om du bara testar denna då

```
select c,count(*) as occ
      from (select count(*) as c
              from iptable
             group by ipnummer) as dt
    group by c
```

Då borde du få ut allt utom de förekomster som är 0. I värsta fall kan man ju lägga till dessa i skriptet.

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

## #7 — Kristianstad, 2005-03-02T15:58Z

Det funkar utmärkt så! Det gör inget om det inte visar de som är 0.

Tack Lars!

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/123468-gruppering
