看楼主的题目,难道是要用SQL语句完成这个“排序”?——恐怕很困难啊。不如取回到
本地,然后使用算法搞定。基本思路如下:
1.统计各个号码段的号码数量,从多到少对号码段排序,例如:
1386902 (22) -- A
1364167 (12) -- B
1395235 ( 8) -- C
1388950 ( 3) -- D
2.按照一定的策略从中不同的号码段中取号码,组成5个一组的号码。
建议使用这样的策略——在保证5个号码的号码段完全不同相同的前提下,尽可能使得剩
下的号码段的号码数量尽可能均匀。也就是说,尽可能拿号码数多的号码段“开刀”,以便
避免到最后没有可用来“混淆”的不同号码段号码。
将这个策略应用到上面的例子中,一个可能的结果如下:
(A:22, B:12, C:8, D:3)
1) 4A 1B
2) 4A 1B
3) 4A 1B
(A:10, B:9, C:8, D:3)
4) 2A 2B 1C
(A:8, B:7, C:7, D:3)
5) 3A 1B 1C
(A:5, B:6, C:6, D:3)
6) 1A 2B 2C
(A:4, B:4, C:4, D:3)
7) 1A 1B 2C 1D
(A:3, B:3, C:2, D:2)
8) 1A 2B 1C 1D
(A:2, B:1, C:1, D:1)
9) 2A 1B 1C 1D
——结束
需要说明的是,即便采用相同的策略,在具体操作时还是有很多可以取舍的地方——答案
并不是唯一的。