以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
要在MySQL中随机抽取部分数据,可以使用RAND()函数。但是,要确保总和接近100万,需要先计算满足条件的记录数,然后根据这个数量来调整抽样比例。以下是一个可能的解决方案:
-- 首先计算满足条件的记录数
SELECT COUNT(*) as total_count
FROM svc_dorecord
WHERE modifiedDate BETWEEN '2023-01-01' AND '2023-02-01'
AND operatortypename = '充值';
-- 假设上面的查询结果为total_count,那么可以按照以下方式进行抽样
SET @total_count = (SELECT COUNT(*) FROM svc_dorecord WHERE modifiedDate BETWEEN '2023-01-01' AND '2023-02-01' AND operatortypename = '充值');
SET @target_sum = 1000000; -- 目标总和
SET @sample_ratio = @target_sum / @total_count; -- 抽样比例
-- 使用抽样比例进行随机抽取
SELECT *
FROM svc_dorecord
WHERE modifiedDate BETWEEN '2023-01-01' AND '2023-02-01'
AND operatortypename = '充值'
AND RAND() <= @sample_ratio;
请注意,这种方法可能会导致实际抽取的数据总和略低于或高于100万,因为抽样是随机的。如果需要更精确的结果,可以考虑多次运行查询并汇总结果,或者使用其他方法(如在应用程序中处理)来确保总和接近100万。