我正在尝试为我的主页创建一个Trending Posts数据库调用。
我认为最好的方法是创建两个整数表。
我遇到的问题是对这些结果进行排序。
这是我的桌子的样子,我跟踪过去的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小时更新一次Trending位置,并将单击重置为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我需要排序这些结果,根据点击,只有当他们是高于趋势位置。
例子:如果post #8的点击次数比第4位的点击次数更多,它将占据它的位置并保持趋势的顺序,但是使用点击也可以对数据进行排序。
最初的帖子将保持他们的位置,直到一个趋势的帖子得到更多的点击比位置取代它的位置。
我试图解决的问题是,当我重置趋势数据时。我每4小时重置一次数据,但希望保持每个趋势帖子的位置和重量。
我解释得够好了,有人能帮帮我吗?
发布于 2015-09-30 16:08:27
为什么这个不适合你?
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) DESChttps://stackoverflow.com/questions/32870700
复制相似问题