正如标题所描述的,我希望编写一些 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 - 分别按展示次数最多的顺序排列。
就像我假设 Google AdWords 一样,用户预算越高,他/她获得的展示次数就越多。
我知道没有人因为性能而喜欢 RAND(),但我的广告商不会超过 100 个。
问候
最佳答案
我想说最好的方法是这样:
SELECT user_id, CPC
FROM advertisement
ORDER BY RAND() * CPC DESC
这将使您的广告随机出现,但理论上 user_id 5 的出现频率是 user_id 1 的 5.5 倍,这是公平的。
关于mysql - sql order by rand() 最高值显示更频繁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39456643/