mysql - sql order by rand() 最高值显示更频繁

标签 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 - 分别按展示次数最多的顺序排列。

就像我假设 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/

相关文章:

mysql - 对大型 mysql 数据库进行大型查询

SQL内连接2个具有多个列条件的表并更新

mysql - 混淆形成 MySQL 主键和外键约束

c++ - 从 com 对象返回数组

vbScript 在分割后忽略许多空格

MySQL:错误代码:1064。创建过程时

mysql - 分组并选择最低

regex - VBScript 正则表达式 - 条件匹配

php - 使用 CodeIgniter 和 MySQL 从数据库获取数据时出现错误

sql - 检查是否存在于 SQL CASE 语句中