0
我瀏覽了與此問題相關的所有500多個答案的摘要,但沒有發現明顯的SQL解決方案來解決我的問題。也許沒有。通過在公司簡介上點擊Top10公司的SQL?或更好的解決方案?
我希望通過在nnn到nnn期間點擊公司簡介來顯示Top10 Companies。
MySQL表來跟蹤公司簡介
CREATE TABLE `hit_company` (
`id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
`hitdate` date NOT NULL DEFAULT '0000-00-00',
`customerid` mediumint(9) unsigned NOT NULL DEFAULT '0',
`organization` varchar(80) DEFAULT NULL,
`hitstamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`remote_addr` varchar(20) DEFAULT NULL,
`hittime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=123456 ;
的MySQL查詢在24小時報告如下所示點擊:
SELECT hitstamp,hitdate,customerid,organization, COUNT(organization) AS 'count' FROM hit_company
WHERE hitstamp >= '2014-01-12 21:23' AND hitstamp <= '2014-01-13 21:23'
GROUP BY customerid ORDER BY count DESC LIMIT 10
這產生了十佳。問題在於,我通過更新remote_addr來刷新其公司資料頁而顯着增加了點擊量,從而人爲地增加了他們的計數器。我只想在報告時間範圍內每個公司每個IP計數1票。
我也考慮過,但我不知道如何編寫類似的東西:
WHERE COUNT(remote_addr < 2)
or
GROUP BY customerid, remote_addr HAVING 'votes' < 2
...所以,相同的IP地址不超過每家公司在最終結果中統計了一次。
什麼是SQL來做到這一點?
如果沒有sql,php/mysql中的最佳解決方案是什麼?
謝謝。
注意 雖然本報告跨越24小時,其他報告從12小時到30天的所有時間。