正如标题所描述的那样,我希望编写一些SQL(mySQL DB)来显示随机记录,其中最高值的显示频率高于其他记录。
select CPC from advertisement ORDER BY RAND(), CPC DESC
上述代码无法按预期工作。
继承人之后:
我有10个广告客户,每个广告客户都设置了自己的cpc(每次点击费用)预算。具有最高预算的广告客户将比其他人更频繁地展示他/她的广告,但所有广告都是随机的。
user_id | cpc |
------------------
1 | 0.10 |
2 | 0.03 |
3 | 0.20 |
4 | 0.04 |
5 | 0.55 |
6 | 0.12 |
因此,用户5将比其他人更频繁地展示他的广告 5,3,6,1,4,2 - 分别按大多数印象的顺序排列。
就像我认为谷歌adwords有效一样,用户预算越高,他/她的印象就越多。
我知道没有人喜欢RAND(),因为我的表现不会超过100个广告客户。
此致
答案 0 :(得分:0)
由于cpc
小于1,您可以执行以下操作:
select CPC
from advertisement
order by RAND() + CPC DESC
这会调整cpc
值,因此列表中的值越高越好。
答案 1 :(得分:0)
我想说最好的方法就是这样:
SELECT user_id, CPC
FROM advertisement
ORDER BY RAND() * CPC DESC
这将使您的广告随机出现,但理论上user_id 5的出现频率比user_id 1高出5.5倍,这是公平的。