18. juni 2003 - 20:15Der er
10 kommentarer og 1 løsning
SQL til statestik script
Hej
jeg er igang med at udvikle et lille statestik-script...
jeg har følgende database:
--- # # Table structure for table `statistik` #
CREATE TABLE statistik ( ID int(11) NOT NULL auto_increment, Ip tinytext NOT NULL, Date int(11) NOT NULL default '0', JS tinyint(4) NOT NULL default '0', Page tinytext NOT NULL, Referer tinytext NOT NULL, Os tinytext NOT NULL, Browser tinytext NOT NULL, Screen tinytext NOT NULL, Color tinytext NOT NULL, PRIMARY KEY (ID) ) TYPE=MyISAM;
# # Dumping data for table `statistik` #
INSERT INTO statistik VALUES (1, '127.0.0.1', 1055959575, 1, '/Stat/ex.html', '0', 'Windows XP', 'Mozilla 1.5a', '1280x1024', '32'); INSERT INTO statistik VALUES (2, '127.0.0.1', 1055959584, 1, '/Stat/ex.html', '0', 'Windows XP', 'Internet Explorer 6.0', '1280x1024', '32'); INSERT INTO statistik VALUES (3, '127.0.0.1', 1055959612, 1, '/Stat/ex.html', '0', 'Windows XP', 'Netscape 7.02', '1280x1024', '32'); INSERT INTO statistik VALUES (4, '127.0.0.1', 1055959619, 1, '/Stat/ex.html', '0', 'Windows XP', 'Netscape 7.02', '1280x1024', '32'); INSERT INTO statistik VALUES (5, '127.0.0.1', 1055959639, 1, '/Stat/ex.html', '0', 'Windows XP', 'Internet Explorer 6.0', '1280x1024', '32'); ---
som i nok kan se, så er der 5 besøg, og 4 unikke...
spørgsmålet er så hvordan jeg fanger unikke besøg... første tanke var bare at lave en "GROUP BY Ip", men denne kan jo lave lidt misvisning...
så spørgsmålet er så, er det muligt at lave en der finder antal rækker der er unikke på Os, Browser, Ip (i den række følge)
Manuelle og semi-automatiske strategier for identitetsstyring virker - lige indtil nogen beder om dokumentation. For at undgå denne fare har DKTV taget kontrol over sin identitets- og adgangsstrategi.
Måske så'n her: --------------- SELECT * , COUNT( Os ) AS numos, COUNT( Browser ) AS numbrowser, COUNT( Ip ) AS numip FROM `statestik` GROUP BY Os, Browser, Ip HAVING numos < 2 AND numbrowser < 2 AND numip < 2
--- INSERT INTO statistik VALUES (1, '127.0.0.1', 1055959575, 1, '/Stat/ex.html', '0', 'Windows XP', 'Mozilla 1.5a', '1280x1024', '32'); INSERT INTO statistik VALUES (2, '127.0.0.1', 1055959584, 1, '/Stat/ex.html', '0', 'Windows XP', 'Internet Explorer 6.0', '1280x1024', '32'); INSERT INTO statistik VALUES (3, '127.0.0.1', 1055959612, 1, '/Stat/ex.html', '0', 'Windows XP', 'Netscape 7.02', '1280x1024', '32'); INSERT INTO statistik VALUES (4, '127.0.0.1', 1055959619, 1, '/Stat/ex.html', '0', 'Windows XP', 'Netscape 7.02', '1280x1024', '32'); INSERT INTO statistik VALUES (5, '127.0.0.1', 1055959639, 1, '/Stat/ex.html', '0', 'Windows XP', 'Internet Explorer 6.0', '1280x1024', '32'); INSERT INTO statistik VALUES (6, '80.196.154.84', 1056049146, 1, '/Stat/ex.html', '0', 'Windows XP', 'Internet Explorer 6.0', '1280x1024', '32'); INSERT INTO statistik VALUES (18, '127.0.0.1', 1056049891, 1, '/Stat/ex.php', '0', 'Windows XP', 'Opera 7.1', '1280x1024', '32'); ---
og dette query:
--- SELECT * , COUNT( Os ) AS numos, COUNT( Browser ) AS numbrowser, COUNT( Ip ) AS numip FROM `statistik` GROUP BY Os, Browser, Ip HAVING numos < 2 AND numbrowser < 2 AND numip < 2 ---
for jeg dette data tilbage:
--- ID Ip Date JS Page Referer Os Browser Screen Color numos numbrowser numip 6 80.196.154.84 1056049146 1 /Stat/ex.html 0 Windows XP Internet Explorer 6.0 1280x1024 32 1 1 1 1 127.0.0.1 1055959575 1 /Stat/ex.html 0 Windows XP Mozilla 1.5a 1280x1024 32 1 1 1 18 127.0.0.1 1056049891 1 /Stat/ex.php 0 Windows XP Opera 7.1 1280x1024 32 1 1 1 ---
men burde jo få 4 rækker (fire forskellige slags browsere)
Nej for ID 3 og 4 er jo ikke unikke, så de (Netscape) kommer jo ikke med. Så jeg er ikke sikker på hvad du vil. Hvis du vil ha' dem grupperet efter; Os, Browser og IP: SELECT * FROM `statistik` GROUP BY Os, Browser, Ip ------------------------- får du jo 5 rækker, da der er 2 forskellige ip'er på Internet Explorer 6.0.
Kan du så ikke bruge: SELECT * , COUNT( Os ) AS numos, COUNT( Browser ) AS numbrowser, COUNT( Ip ) AS numip FROM `statistik` GROUP BY Browser, Os eller måske bare: SELECT * FROM `statistik` GROUP BY Browser, Os
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.