我有一个table
,它有id
和group_id
的外键。
我想创建(N=2)个大小相等的桶(大约),这样所有给定group_id
的行都在同一个桶中结束。
例如,给定:
id, group_id
1,1
2,1
3,2
4,NULL
5,1
6,2
字符串
我得到:
id, group_id, bucket_id
1,1,1
2,1,1
3,2,2
4,NULL,2
5,1,1
6,2,2
型
有没有一个简单的方法来实现这一点,我错过了?
我有一个table
,它有id
和group_id
的外键。
我想创建(N=2)个大小相等的桶(大约),这样所有给定group_id
的行都在同一个桶中结束。
例如,给定:
id, group_id
1,1
2,1
3,2
4,NULL
5,1
6,2
字符串
我得到:
id, group_id, bucket_id
1,1,1
2,1,1
3,2,2
4,NULL,2
5,1,1
6,2,2
型
有没有一个简单的方法来实现这一点,我错过了?
2条答案
按热度按时间3hvapo4f1#
您应该能够使用NTILE分析函数
xe55xuns2#
这将为两个桶做一个大致不错的工作,因为所有like group_id的排名都是相同的,你只需要在中途设置截止点。
当然,这是脆弱的,如果你有一个案例,有10个记录,{group id:count}像{1:9,2:1},它仍然会非常倾斜。
小提琴:https://dbfiddle.uk/lbj5sXgo
字符串