mysql - SQL 趋势数据

标签 mysql trending

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

我想到的最好方法是制作 2 个整数表。

我遇到的问题是对这些结果进行排序。

这是我的表格的样子,我跟踪最近 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

仅当这些结果高于趋势位置时,我才需要根据点击次数对这些结果进行排序。

示例:如果帖子 #8 获得的点击次数多于位置 #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

关于mysql - SQL 趋势数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32870700/

相关文章:

javascript - 显示趋势线的 Web 图表 Javascript 图形库

python - 使用 Tweepy 查找特定关键字的热门推文

mysql - 我的 INSERT 查询不工作

php - 如何让php连接到mysql?

MySQL 在具有多列/单列索引的范围查询上高效选择/排序

php - 搜索查询,例如 Twitter 热门话题

MySQL 多对多 : Insert into table and then into junction table?

php - 使用 php 和 mysql 从多个表中复制行

php - 如何显示带有视频ID的Youtube 10趋势视频?