gpt4 book ai didi

php - 公司概况点击量排名前 10 名的公司的 SQL - 或者更好的解决方案?

转载 作者:行者123 更新时间:2023-11-30 00:49:25 25 4
gpt4 key购买 nike

我浏览了与此问题相关的所有 500 多个答案的摘要,但没有发现针对我的问题的明显 SQL 解决方案。也许没有。

我希望显示从 nnn 到 nnn 时间段的公司简介点击量排名前 10 的公司。

用于跟踪公司简介点击率的 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 ;

24 小时报告的 MySQL 查询如下所示:

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

这会产生 Top10。问题是,通过改变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 天不等。

最佳答案

SELECT whatever FROM (
SELECT whatever FROM hit_company
WHERE hitstamp >= whatever
GROUP BY organization, remoteaddr
) GROUP BY customerid ORDER BY count

手写未经测试。基本思想是使用子查询。如果数据量大的话,会很慢。

关于php - 公司概况点击量排名前 10 名的公司的 SQL - 或者更好的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21107029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com