Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL趋势数据_Mysql_Trending - Fatal编程技术网

Mysql SQL趋势数据

Mysql SQL趋势数据,mysql,trending,Mysql,Trending,我正在尝试为我的主页创建一个趋势帖子数据库调用 我认为最好的方法是制作两个整数表 我面临的问题是对这些结果进行排序 这是我的表格的样子,我跟踪最近10个趋势帖子 name trending clicks post1 10 5 post2 9 15 post3 8 12 post4

我正在尝试为我的主页创建一个趋势帖子数据库调用

我认为最好的方法是制作两个整数表

我面临的问题是对这些结果进行排序

这是我的表格的样子,我跟踪最近10个趋势帖子

name         trending             clicks
post1          10                   5
post2           9                   15
post3           8                   12
post4           7                   10
post5           6                   8
post6           5                   8
post7           4                   22
post8           3                   18
post9           2                   8
post10          1                   8
趋势位置每4小时更新一次,点击重置为0

根据这些数据,我需要按照这个顺序来拉帖子

name         trending             clicks
post6           5                   22
post8           3                   18
post2           9                   15
post3           8                   12
post4           7                   10
post5           6                   8
post9           2                   8
post10          1                   8
post1          10                   5
下面是另一个例子:

name         trending             clicks
post1          10                   0
post5           6                   9
post2           9                   0
post3           8                   0
post4           7                   0
post6           5                   0
post7           4                   0
post10          1                   3
post8           3                   0
post9           2                   0
我需要根据点击量对这些结果进行排序,前提是点击量高于趋势位置

示例:如果Post8 get的点击次数多于position 4,它将占据其位置并保持趋势的顺序,但使用点击也会对数据进行排序

原始帖子将保持其位置,直到趋势帖子的点击次数超过取代它的位置

我试图解决的问题是,当我重置趋势数据时。我每4小时重置一次数据,但希望保持每个趋势帖子上的位置和权重


我解释得够清楚了吗?有人能帮我吗?

为什么这对你不起作用

SELECT name, trending,  clicks
FROM YourTable 
ORDER BY clicks DESC
但如果你想保持以前的趋势,那么你需要添加一个权重列

SELECT name, trending, clicks, weight
FROM YourTable 
ORDER BY ((clicks + weight) /2) DESC
不是每4小时重置一次趋势,而是计算最后4小时的点击次数。您必须记录每次单击的数据时间

SELECT name, count(clicks) as clicks
FROM YourTable
WHERE datetime > DATEADD(h,-4,GETDATE())
GROUP BY name
ORDER BY count(clicks) DESC

看起来你想给我按点击排序。如果没有,你能提供一个不是这样的例子。我已经用另一个格式化的例子更新了原始帖子。你能添加更多的标签吗?这是sql server、mysql、oracle等吗?点击+权重的好主意。我正在尝试这个!!!我无法使用时间戳。当我这样做的时候,其中一些帖子永远不会移动位置。有时在1和2之间会有数百次点击。我希望通过经常重置帖子,可以给其他帖子一个登顶的机会。另一种方法是使用公式,根据点击的时间为每次点击分配权重。比如ClickWeight=1/number of秒,那么你的趋势就是SUMClickWeight。这里真正的工作是找到一个合适的权重函数。我做过一次实时交通功能。在过去的5分钟里,每辆车都有相同的重量,但之后是指数衰减。这样,最新的数据总是有更多的权重,但如果没有数据,旧的数据也会增加结果。是的,胡安。我正在努力使新数据能够与旧数据竞争。您的示例“按位置从测试顺序中选择*”+单击/2描述非常有效!我不知道我可以这样分类。非常感谢!!!!这对你来说很好,但你必须再次小心,因为这是一个简单的公式。如果前4小时一个帖子有很多趋势,那么需要几次重置才能从顶部下降。这就是为什么我建议使用衰减函数。