You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Snowflake/MySQL中按组分配1-3的均等随机数?

解决方案:分组内均等分配1-3的随机数

核心思路:先对每个分组内的行随机打乱顺序,再用分桶函数将每组均分为3个部分,每个部分对应1、2、3,保证数值分布尽可能均等。

Snowflake 实现

SELECT 
    Roll_number,
    Col1,
    NTILE(3) OVER (PARTITION BY Col1 ORDER BY RANDOM()) AS Random_Number
FROM your_table_name
ORDER BY Col1, Random_Number;

MySQL 实现(8.0+ 版本支持窗口函数)

SELECT 
    Roll_number,
    Col1,
    NTILE(3) OVER (PARTITION BY Col1 ORDER BY RAND()) AS Random_Number
FROM your_table_name
ORDER BY Col1, Random_Number;

关键说明

  • 随机排序:通过RANDOM()(Snowflake)或RAND()(MySQL)在分组内随机打乱行的顺序,确保每次分配的结果具有随机性
  • 均等分桶:NTILE(3)会自动将每个分组的行划分为3个桶,当分组内总行数无法被3整除时,前N个桶(N为余数)会比其他桶多1行,保证各数值的数量差异不超过1,实现最接近均等的分布
  • 以你的示例为例:分组A共8行,会生成3个1、3个2、2个3;分组B共4行,会生成2个1、1个2、1个3,完全符合均等要求

内容的提问来源于stack exchange,提问作者Gravity Boy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 02:59:59