首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Trending数据

SQL Trending数据
EN

Stack Overflow用户
提问于 2015-09-30 16:00:06
回答 1查看 1.4K关注 0票数 0

我正在尝试为我的主页创建一个Trending Posts数据库调用。

我认为最好的方法是创建两个整数表。

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

这是我的桌子的样子,我跟踪过去的10个趋势的帖子。

代码语言:javascript
复制
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。

从这些数据中,我需要按这个顺序提取帖子。

代码语言:javascript
复制
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

下面是另一个例子:

代码语言:javascript
复制
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小时重置一次数据,但希望保持每个趋势帖子的位置和重量。

我解释得够好了,有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-30 16:08:27

为什么这个不适合你?

代码语言:javascript
复制
SELECT name, trending,  clicks
FROM YourTable 
ORDER BY clicks DESC

但是,如果您想保持以前的趋势,那么您需要添加一个权重列。

代码语言:javascript
复制
SELECT name, trending, clicks, weight
FROM YourTable 
ORDER BY ((clicks + weight) /2) DESC

与其每隔4小时重置一次趋势,不如计算最后4小时的点击量。您必须记录每次单击的数据。

代码语言:javascript
复制
SELECT name, count(clicks) as clicks
FROM YourTable
WHERE datetime > DATEADD(h,-4,GETDATE())
GROUP BY name
ORDER BY count(clicks) DESC
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32870700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档