webForumDet fria alternativet

Gruppering

6 svar · 278 visningar · startad av Kristianstad

KristianstadMedlem sedan dec. 2002747 inlägg
#1

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.

@ndersMedlem sedan juni 200026 914 inlägg
#2
SELECT ipnummer, count(*) as antal
GROUP BY ipnummer
ORDER BY 2 DESC

mvh

KristianstadMedlem sedan dec. 2002747 inlägg
#3

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?

LarsGMedlem sedan dec. 200012 465 inlägg
#4

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.

KristianstadMedlem sedan dec. 2002747 inlägg
#5

Hejsan Lars!

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

LarsGMedlem sedan dec. 200012 465 inlägg
#6

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.

KristianstadMedlem sedan dec. 2002747 inlägg
#7

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

Tack Lars!

Genererad på 372 ms · cache AV · v20260730165559-full.f96bc7eb