selectie per minuut over het afgelopen uur

Status
Niet open voor verdere reacties.

thomascook

Nieuwe gebruiker
Lid geworden
29 apr 2008
Berichten
4
Hallo,

T.b.v. een grafiek ben ik op zoek naar een query die het volgende bereikt.
Het aantal Inlogpogingen per minuut, gesorteerd vanaf de laatste minuut tot en met een uur geleden.

Stel ik heb de volgende tabel:

LoginTime UserName Error
17:25:43 ThomasC 0
17:25:46 ThomasC 0
17:25:51 ThomasC 0
17:28:53 ThomasC 0
17:31:21 ThomasC 0
17:31:43 ThomasC 0

Dan is dit de output (indien het nu 17:32 is):

31 2
30 0
29 0
28 1
27 0
26 0
25 3

Heeft iemand een idee hoe ik dit op kan lossen?"

Groet,
Thomas
 
Allereerst gebruik je een substring om naar de minuten te gaan. Gebruik hiervoor bijvoorbeeld SUBSTR(TIME,3,2), vanaf het derde karakter twee karakters nemen.

Daarna maak je (of je doet dat in hetzelfde statement) er een CHAR van. Bijvoorbeeld (afhankelijk van de SQL taal) TO_CHAR(SUBSTR(TIME,3,2)). Je krijgt dan de minuten als karakters terug. Bijvoorbeeld 31 (dat is dan tekst).

Daarna wil je gaan tellen. Wat je doet is dat je telt over de 31 als tekst. Bijvoorbeeld:

Select
User
, To_Char(Substr(Time,3,2)) AS MIN_IND
, Count(User)
From

Group By
User
, To_Char(Substr(Time,3,2))

Hiermee tel je het aantal users ingelogd per minuut.

Hierbij moet ik 1 kanttekening plaatsen: als niet alle minuten voorkomen ontbreken die ook in het resultaat (je zult dus nooit 0 zien). Mocht je dit willen oplossen dan kun je een tabel maken met 60 rijen waarin alle minuten voorkomen. Je moet deze tabel dan outer joinen aan je reeds bestaande tabel, zodat je wel alle minuten ziet.

Bijvoorbeeld:

SELECT
Minuut
, Count(User)
, User
FROM [MINUUT_TABEL] A
LEFT OUTER JOIN [JOUW_TABEL] B
ON A.MINUUT = TO_CHAR((SUBSTR(B.TIME,3,2)))
GROUP BY
Minuut
, User
 
ORDER BY 'system time'

Hi Cloosen,

Bedankt voor je antwoord. Sorry voor de late reactie, maar het duurde nogal lang voordat ik dit aan de praat kreeg. Ik heb de onderste code gebruikt om de 'minuten-tabel' te joinen aan de 'inlog tabel' en op dit moment heb ik per minuut de aantal keren dat er is ingelogd.

De sortering is alleen nog niet helemaal top. De sortering loopt nu gewoon vanaf 59 naar 00. Het liefst zie ik de lijst beginnen met 60 minuten geleden tot en met nu.

Enig idee hoe ik dit kan oplossen?

Groet,
Thomas
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan