[sql] hoe moet ik dit aanpakken (group by met timestamps)

Pagina: 1
Acties:

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
Ik ben bezig met een soort statistieken-grafiekje. Heb net GD aan de praat gekregen. Nou ben ik benieuwd of ik het volgende kan doen. Ik heb een tabel, die heet bezoekers, en slaat alle unieke bezoekers op, met een IP adres en de tijd dat zij de site het eerst bezochten:

SQL:
1
2
3
4
5
CREATE TABLE bezoekers (
  IP int(11) NOT NULL default '0',
  FIRST_TIME int(11) default NULL,
  REFERER text NOT NULL
) TYPE=MyISAM;


Nou wil ik voor die grafiek al die timecodes groeperen per dag. Dit kun je doen door een hele hoop queries te gaan doen (steeds een query die records selecteert per dag), maar volgens mij is dat niet 'the right way to do it'. Is er iemand die een betere oplossing weet? Het zou mooi zijn als MySQL kan groeperen (dmv GROUP BY ofzo) per dag, of per uur, zodat ik iets als dit eruit krijg:
code:
1
2
3
4
Datum           Bezoekers
07-10-2002  100000000
06-10-2002  9000000
05-10-2002  99999999


:)

en die 1000000 is natuurljik geen echt getal ;)

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
Met date format kun je een timestamp of iets dergelijks omzetten naar een nette datum die door de gebruiker ook wordt gesnapt. Maar dat is niet echt de vraag :/

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

select ... blaat, date_format(timefield) as bla

..
group by bla

en nu jij weer ;)

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
ACM schreef op 07 oktober 2002 @ 21:31:
select ... blaat, date_format(timefield) as bla

..
group by bla

en nu jij weer ;)
Aha :) Daar kan ik tenminste wat mee..... en als ik zoiets doe:

SQL:
1
SELECT COUNT(*) as bezoekers,DATE_FORMAT(timecode) as dag,MAX(bezoekers) GROUP BY dag ORDER BY dag DESC


Wat doet 'ie dan met die MAX? krijg ik dan het totaal aantal bezoekers, of het aantal bezoekers per dag?

Verwijderd

levert Count(*) al niet het aantal bezoekers op van die dag. Wat wil je dan met max(bezoekers) bereiken?

[ Voor 0% gewijzigd door Verwijderd op 08-10-2002 11:27 . Reden: typo ]


Verwijderd

ow en fix je wel ff de goede syntax van date_format?

nu krijg je gegarandeerd een syntax error

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Die MAX bezoekers zal iets heel bijzonders doen, maar wat zou ik niet weten :+

Ik zou het iig bij die count houden voor het tellen van je bezoekers op die dag...

Verwijderd

ACM schreef op 08 oktober 2002 @ 11:46:
Die MAX bezoekers zal iets heel bijzonders doen, maar wat zou ik niet weten :+

Ik zou het iig bij die count houden voor het tellen van je bezoekers op die dag...
ben nu ook wel benieuwd wat het gaat geven. Ik gok op 1, aangezien bezoekers afgeleid is van een Count......

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
Ik ga het proberen :)

  • Theguide
  • Registratie: December 2000
  • Laatst online: 26-06-2025
Volgens mij pakt MAX gewoon 1 rij uit de tabel. Die Count(*) zal altijd een 1 opleveren. Er kan maar 1 rij een MAX hebben voor een bepaald veld lijkt me....
Maar SQL is niet m'n sterkste kant, dus ik kan het mis hebben :)

Fuck me if I'm wrong, but isn't your name Gretchen?


  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
Het werkt niet :( Ik dacht dat het zo moest werken:

SQL:
1
SELECT COUNT(*) FROM bezoekers GROUP BY DATE_FORMAT(first_time,'%d%m%y') ORDER BY first_time DESC


Maar dan krijg ik gewoon hetzelfde terug als dat ik "SELECT COUNT(*) FROM bezoekers" zou doen :(

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
Daar ben ik natuurlijk al geweest, bovendien snap ik wel hoe die functies werken, het gaat me met name om de combinatie met GROUP BY die dus niet echt werkt nu :(

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
Ik ben al een end verder.... als ik met DATE_FORMAT iets doe met die tabel zonder GROUP BY erin, dan krijg ik NULL terug. De DATE_FORMAT werkt dus niet :( Ik maak de timestamp die daar staat met de PHP functie time(), en dus NIET met de MySQL-TIMESTAMP of iets dergelijks als NOW(). Hoe los ik dit op :/

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
OK gevonden..... ik doe het nu zo:
SQL:
1
SELECT COUNT(*),FROM_UNIXTIME(first_time,'%d%m%y') as time FROM bezoekers GROUP BY time


allemaal bedankt :*
Pagina: 1