sql排序问题 ( 积分: 100 )

  • 主题发起人 主题发起人 常广荣
  • 开始时间 开始时间

常广荣

Unregistered / Unconfirmed
GUEST, unregistred user!
有一段手机号码排序,要求每五个一组而且号码段不能完全相同(这五个号码段至少有一个是不能相同的),号码段是指手机号码的前七位。
 
看楼主的题目,难道是要用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
——结束
需要说明的是,即便采用相同的策略,在具体操作时还是有很多可以取舍的地方——答案
并不是唯一的。
 
如果所有的号码段一样怎么办?
 
问题早解决了
散分
 
creation-zy真热情啊,佩服。
 
后退
顶部