由rand()的sql顺序,最高值显示更频繁

时间:2016-09-12 18:36:30

标签: mysql sql vbscript

正如标题所描述的那样,我希望编写一些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个广告客户。

此致

2 个答案:

答案 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倍,这是公平的。