SQL 趋势数据
SQL Trending Data
我正在尝试为我的主页创建一个 Trending Posts 数据库调用。
我想到的最好的方法是制作 2 个整数 tables。
我遇到的问题是对这些结果进行排序。
这是我的 table 的样子,我跟踪最近 10 个趋势 post。
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。
根据这些数据,我需要按此顺序提取 posts
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,它将占据它的位置并保持趋势顺序,但使用点击次数也对数据进行排序。
最初的 post 将保持他们的位置,直到趋势 post 获得的点击次数超过取代它的位置。
我试图解决的问题是当我重置趋势数据时。我每 4 小时重置一次数据,但想保持每个趋势的位置和权重 post。
我是否解释得足够好,有人可以帮助我吗?
为什么这对你不起作用?
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
我正在尝试为我的主页创建一个 Trending Posts 数据库调用。
我想到的最好的方法是制作 2 个整数 tables。
我遇到的问题是对这些结果进行排序。
这是我的 table 的样子,我跟踪最近 10 个趋势 post。
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。
根据这些数据,我需要按此顺序提取 posts
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,它将占据它的位置并保持趋势顺序,但使用点击次数也对数据进行排序。
最初的 post 将保持他们的位置,直到趋势 post 获得的点击次数超过取代它的位置。
我试图解决的问题是当我重置趋势数据时。我每 4 小时重置一次数据,但想保持每个趋势的位置和权重 post。
我是否解释得足够好,有人可以帮助我吗?
为什么这对你不起作用?
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