sql - 选择在 TSQL 中平衡的特定列中具有标签的数据子集
问题描述
我在一个表中有大约 4M 条记录。此表中的每条记录都是不同的。其中一列“标签”具有两个不同的值 L1 和 L2。我想随机选择 100000 条记录,这样 50% 的数据有标签 L1,其余的有 L2。
例如:如果下表是主表并且大约有 10 行
s_key C1 C2 labels
s1 0.2 0.1 L1
s2 0.3 0.3 L1
s3 0.25 0.32 L2
s4 1.4 0.5 L1
s5 2.3 9.0 L1
s6 1.2 0.8 L1
s7 0.8 0.4 L1
s8 2.6 9.5 L2
s9 3.7 7.1 L2
s10 2.7 8.3 L2
我想从上表中随机选择 4 条记录,这样 50% 即 2 条记录的标签为 L1,2 条记录的标签为 L2,如下所示
s_key C1 C2 labels
s1 0.2 0.1 L1
s2 0.3 0.3 L1
s3 0.25 0.32 L2
s10 2.7 8.3 L2
如何在 Tsql/Sql 中执行此操作?感谢任何输入。
解决方案
你也可以使用这个:
SELECT TOP 50000 *
FROM table
WHERE labels = 'L1'
ORDER BY NEWID()
UNION ALL
SELECT TOP 50000 *
FROM table
WHERE labels = 'L2'
ORDER BY NEWID()
推荐阅读
- django - 如何在 AbstractUser 模型中修改电子邮件字段,以便需要电子邮件
- python-3.x - 如何获得每个频段的平均fft值?
- javascript - NodeJS、sqlite3 和 WHERE IN 参数
- ubuntu - 在 Ubuntu 18.04 - 内核 4.18 中未调用 Netfilter 挂钩
- python-3.x - 通过分类字段创建连续字段的密度图
- javascript - 正则表达式附加字符并删除结束双引号
- php - 我的函数不小心从字符串中删除了数字
- python - 在 JSON 序列化期间仅为部分数据自定义格式
- r - 如何从 R 中列名的不同部分创建两个键列?
- php - 如何有效地存储所有文本编辑?