我知道标题有点复杂,但我得到的是:
我有一张存储的不同广告横幅表格,将在网页上显示。我正在尝试以最佳方式对这些广告进行排序,以满足网站订阅者的需求。所以,我想到的一个例子是:
该表格包含广告名称,目标受众群体,坐标,受欢迎程度和展示奖励。假设我想只显示与当前用户登录的目标受众相等的广告。我还想只显示那些至少具有5的受欢迎程度和距成员距离的事件< 80英里。与会员距离较远是好的,拥有较高的人气也是好的。我知道我可以通过Descending Popularity和Ascending Distance对查询结果进行排序。
然而,这对我正在尝试做的事情并不理想。如果我按照刚刚描述的方式做到这一点,我想我可能会遇到一个问题,结果是距离用户6英里远,但是只有5的受欢迎程度。我不希望这个结果是其中之一第一个排序的查询结果出现。
我认为很酷的是使用规范化加权乘数得出综合分数,通过该分数对查询结果进行排序。比方说,我希望流行度的权重系数为0.7,距离的权重系数为0.3。现在,查询的结果将按最大的综合得分Desc排序。我已经知道为了使距离工作,我必须将最小距离除以查询结果中的所有距离值,以便实际最低距离的得分为1.这将是这部分算法。然后,当然,1和所有其他距离值将乘以0.3以使加权乘数生效。反之亦然,为人气
我知道这听起来很复杂,但必须以某种方式实现。我以前用过solver在Excel电子表格中完成了它,但是现在我必须把它翻译成SQL。非常感谢任何和所有反馈。
我预料到的一个问题是从广告表中获取坐标,并将其与登录到我的网页的用户的当前位置进行比较。这必须在显示查询结果之前完成,因为查询不是询问坐标而是询问与用户的距离。现在,我想一想。这部分不应该太难编码。也许我只需要语法方面的帮助。
答案 0 :(得分:2)
所以,如果你得到[0 - 5]之间的等级 和距离,
所以你会这样排序? ((普及* 0.7)*((distanceMAX距)* 0.3))
甚至可能将这些权重设置为服务器变量,这只是一个建议(在我的excel文档中计算出来)呵呵
select field1, field2, field3
from stuff
order by ((popularity*0.7)*((distanceMAX-distance)*0.3)) desc
答案 1 :(得分:1)
你可以试试这样的事情
SELECT ad.*, ((ad.popularity * 0.7) + (ad.distance * 0.3)) AS relevance
FROM ad
WHERE popularity >= 5
ORDER BY relevance, popularity DESC
未经测试但也许它可能会帮助您进行更多实验?