gpt4 book ai didi

mysql - mysql中如何根据时区平均分配用户帐户?

转载 作者:行者123 更新时间:2023-11-29 13:54:06 24 4
gpt4 key购买 nike

我有 1000 个帐户。每个帐户都有 account_name、account_id、time_zone_id

我想为每个帐户生成 3 个用户的事件。

因此,我需要为使用的 #10 生成 333 个事件,为用户 #11 生成 333 个事件,为用户 #12 生成 334 个事件。但我需要确保时区分布均匀。因此,如果我在 18 时区有 200 个帐户,在 10 时区有 400 个帐户,在 7 时区有 200 个帐户,在 39 时区有 200 个帐户,那么我想确保为用户平均分配这些新事件

我尝试过像这样的选择来获取计数,看看我是否走在正确的方向

SELECT count(ac.account_id) AS total, ac.time_zone_id,
(SELECT user_id FROM users where team_id = 4 ORDER BY RAND() LIMIT 1 ) AS user_id
FROM accounts AS ac
GROUP BY ac.time_zone_id

这创建了事件,但分配不均。

最佳答案

以下内容将为每个帐户返回一个 user_no ( 10-12 )。它按 time_zone_id 排序,然后使用 mod 函数依次选择三个用户中的每一个(用户 10 表示第一个结果,11 表示第二个结果,12 表示第三个结果,10 表示第四个结果,依此类推)。

set @r = 0 ;
select
@r:=@r+1 row_no,
account_id,
account_name,
mod(@r,3)+10 user_no
from
account
order by
time_zone_id

修订

您可以通过类似的方式获取用户

set @ur = 0;
select
@ur:=@ur+1 user_row_no,
user_id
from users
where team_id = 4

再次修改

应该是这样的

制作一些示例数据

create table users( user_id int, team_id int) ;
insert into users select 2,4
union select 3,4
union select 1,2
union select 7,4
union select 6,4;

create table account ( account_id int,
account_name varchar(20),
time_zone_id varchar(3),
assigned_to int
);

insert into account(account_id ,account_name,time_zone_id)
select 1,'Janice','pst'
union select 2,'Jonny','gmt'
union select 3,'Jane','gmt'
union select 4,'Janet','pst'
union select 5,'James','gmt';

制作一个表格来弹出我们感兴趣的用户(可以/应该是一个 temp_table)

create table temp_user( id int AUTO_INCREMENT primary key,
user_id int
);


insert into temp_user( user_id )
select user_id
from users
where team_id = 4;

更新

set @r=0;

update account join
(
select
@r:=@r+1 row_no,
account_id,
account_name,
assigned_to
from
account
order by
time_zone_id
) x
on x.account_id = account.account_id
join
temp_user
on

temp_user.id=(1+ mod(row_no,(select count(*) from temp_user)))
set account.assigned_to = temp_user.user_id

http://sqlfiddle.com/#!2/164733/10

关于mysql - mysql中如何根据时区平均分配用户帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16158857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com