复杂的应用(算法相关)
有这么一个表 a(username, firstname,secondname, email, address, time, code,country, state)
现在要找出近似度比较高的用户, 从接到这个case发现有史以来难度最大的sql,直觉就是一个算法问题。当前的近似度如下
username  20
 firstname  
secondname   (firstname和secondname联合20)
 email   20 
 address  20 
 time    0
 code    10
country   8
 state    2
这是近似度指标值, 例如几个用户如果username都相同,那么这个几个用户都得到20分。如果还是这几个用户的firstname和secondname也都相同,那么他们继续得到20分。如果state都同再得2分。
下面给一个例子
  分数  username, firstname,secondname, email,      address, time, code,country,   state
1 100  li         li         hai       [email protected]  aaa             1     china     shanghai
2  90     li         li         hai       [email protected]   aaa             2     china     shanghai
3  58     li         li         long      [email protected]    aa             1     china      beijing
4  50       li         li         hai       [email protected]  b              1     England    london
这个例子是我结合需求实现的, 就是将这几个分成一组,id=1 可以看到他的所有值都能在同组记录里找到重复值。
id=2的code=2是在这个组里是找不到的哦,所以减去10分得到90分。
id=3的firstname和secondname联合在这个组里是无法找到重复值,所以先去20分,address再减去20,state再减去2分,最后58;
id=4的同理得到50分。这个表当前几万条记录,首先必须确定分组标准。 (这个标准如何定,算法总体如何设计??)
之后如何实现,开始准备用sql,后来改用临时表存储过程。(实际情况更复杂,是多表关联,我这里大大简化问题)。
还是没有头绪??

解决方案 »

  1.   

    liyihongcug (lili)
      '截至2009-09-01 18:13:54  用户结帖率62.24%  总发帖:384  正常结帖:170  未结帖:145  最后一次结贴: 2009-07-06
      

  2.   

    SQL不是用于计算处理的,不能总是想着用SQL语句来实现一些应该有程序来实现的功能。
      

  3.   

    好的 以后注意马上结贴。现在任务太多,没有办法。请谅解。
    楼上 我看了以前有人写的sqlserver的 sql 的一本书,书中把sql能用得应用算法。
    如果这样, 不用sql, 考虑如何实现算法实现这个应用?