Avatar billede fuxi Nybegynder
08. januar 2004 - 08:15 Der er 6 kommentarer og
1 løsning

Gruppering + Count af datoer

Jeg har et bannersystem der gemmer en række data i en tabel. Hver gang et banner vises gemmes der en record i en MS SQL database. For at gøre problemet simpelt, antager vi at jeg gemmer BannerID og TimeStamp hvor TimeStamp er en datetime f.eks. "2004-12-12 10:22".

Mit problem er at jeg gerne vil trække en statistik ud for hver dag. Det vil sige et count af hvor mange visninger der har været, pr. dag. Jeg vil helst hvis jeg kunne lave udtrækket direkte i SQL

Jeg har prøvet at lave noget i stil med dette:

SELECT bs.bannerID, bs.timeStamp, (SELECT COUNT(bannerID) FROM banner_stat WHERE datediff(dd,bs.timeStamp,timeStamp) = 0) AS cnt
FROM banner_stat bs
WHERE bs.bannerID=121

Men det virker ikke efter hensigten, da den jo så kommer til at tælle alle de visninger der har været den 23 november + den 23 oktober etc. sammen til en.... Nogle ideer?

Det er muligt at det ikke kan løses direkte i databasen og det skal laves i ASP
Avatar billede eagleeye Praktikant
08. januar 2004 - 08:56 #1
Hvad hvis du prøve denne SQL:

SELECT bannerID, COUNT(bannerID) FROM banner_stat WHERE datediff(dd,banner_stat.timeStamp,timeStamp) = 0) AND banner_stat.bannerID=121

Og måske skal der vist GROUP BY på sådan ID kan komme med ud

SELECT bannerID, COUNT(bannerID) FROM banner_stat WHERE datediff(dd,banner_stat.timeStamp,timeStamp) = 0 AND banner_stat.bannerID=121 GROUP BY bannerID
Avatar billede fuxi Nybegynder
08. januar 2004 - 09:18 #2
Hmmm det virker ikke nu tæller den blot alle visninger for banneret... Men ideen var jo at den skulle trække ud så der f.eks. stod:

12/12 - 2003: 12
13/12 - 2003: 11
14/12 - 2003: 14
Avatar billede eagleeye Praktikant
08. januar 2004 - 09:40 #3
ok, og så skal du havde formateret datoen i SQLen fra Now() 12/12-2003 12:34:56 til Date 12/12-2003 så man kan lave en group by:

SELECT banner_stat.timeStamp, COUNT(bannerID) FROM banner_stat WHERE banner_stat.bannerID=121 GROUP BY banner_stat.timeStamp
Avatar billede eagleeye Praktikant
08. januar 2004 - 09:44 #4
måske det virker med dateformat:  dateformat(now(),'YYYY-MM-DD')


SELECT dateformat(banner_stat.timeStamp,'YYYY-MM-DD'), COUNT(bannerID) FROM banner_stat WHERE banner_stat.bannerID=121 GROUP BY dateformat(banner_stat.timeStamp,'YYYY-MM-DD')
Avatar billede fuxi Nybegynder
13. januar 2004 - 14:57 #5
tak for hjælpen :)
Avatar billede fuxi Nybegynder
13. januar 2004 - 14:58 #6
kan du ikke lige oprette et svar hvis du vil have point for din hjælp :)
Avatar billede eagleeye Praktikant
13. januar 2004 - 21:32 #7
Jeps her et svar ;)
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
Kurser inden for grundlæggende programmering

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