Avatar billede borup110 Nybegynder
23. januar 2013 - 19:25 Der er 4 kommentarer

Tælle data time for time

Hejsa

Jeg har en database med ugedag,dato og klokkeslet.

Jeg sklál vide hvad der er sket på den enkelte dag time for time.

Hvordan kan jeg lave en rapport, hvor den tælle sammen, hvad der er sket mellem kl f.eks. 05:59 og kl 06:59, og de efterfølgende timer. det skal gælde for hele døgnet.

Kan det laves i excel??
Avatar billede andera Novice
29. januar 2013 - 13:15 #1
Lav en forespørgsel hvor tiden vises som timen, lad rapporten gruppere på dato og timen
Avatar billede kjulius Novice
26. august 2014 - 18:12 #2
Nu er det jo ikke megen information du giver. Det er altid en god ide at oplyse om tabellernes felter og felttyper. De oplyste oplysninger vil f.eks. alle kunne uddrages af et enkelt datofelt, men jeg formoder, at du rent faktisk har brugt 3 felter. Jeg vil ligeledes formode, at dato og klokkeslet er to datetime felter.

Du skriver, at du ønsker en rapport der viser, "hvad der er sket", men du angiver ikke noget om, hvordan du vil have det oplyst. Så jeg har antaget, at du bare vil have oplyst hvor mange registreringer der er foretaget for hver time.

Med de antagelser in mente kunne du gøre sådan her:

Opret en tabel (tblTimeInterval) med to felter, FraTidspunkt, TilTidspunk. Herefter indtaster du 24 records med fra og til tidspunkter i denne tabel:
00:00:00 00:59:59
01:00:00 01:59:59
02:00:00 02:59:59
... osv
23:00:00 23:59:59

Du kan nu lave en optællingsforespørgsel:

SELECT dt.Ugedag, dt.Dato, ti.FraTidspunkt, ti.TilTidspunkt, COUNT(dt.Ugedag) AS Registreringer
FROM tblTimeInterval AS ti, tblDinTabel AS dt
GROUP BY dt.UgeDag, dt.Dato, ti.FraTidspunkt, ti.TilTidspunkt

Fordelen ved at gøre det på den måde er, at du også får listet de tidsintervaller, hvor der ikke er sket nogen registreringer.

Disclaimer: Ovenstående er ikke testet (det må du selv gøre).
Avatar billede kjulius Novice
26. august 2014 - 18:16 #3
Og så glemte jeg selvfølgelig det vigtigste: udvælgelsen

SELECT dt.Ugedag, dt.Dato, ti.FraTidspunkt, ti.TilTidspunkt, COUNT(dt.Ugedag) AS Registreringer
FROM tblTimeInterval AS ti, tblDinTabel AS dt
WHERE dt.Klokkeslet BETWEEN ti.FraTidspunkt AND ti.TilTidspunkt
GROUP BY dt.UgeDag, dt.Dato, ti.FraTidspunkt, ti.TilTidspunkt
Avatar billede kjulius Novice
26. august 2014 - 18:31 #4
Jeg er faktisk kommet lidt i tvivl om en LEFT JOIN  er nødvendig for at få alle tidsintervaller med. Måske skal du i stedet bruge

SELECT dt.Ugedag, dt.Dato, ti.FraTidspunkt, ti.TilTidspunkt, COUNT(dt.Ugedag) AS Registreringer
FROM tblTimeInterval AS ti
LEFT JOIN tblDinTabel AS dt ON dt.Klokkeslet BETWEEN ti.FraTidspunkt AND ti.TilTidspunkt
GROUP BY dt.UgeDag, dt.Dato, ti.FraTidspunkt, ti.TilTidspunkt
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester