2014-09-11 69 views
0

下面是一个例子如何可以使用一个简单的MySQL查询我可以从步骤做1 - >步骤4如何计算概率并使用MySQL将计算值更新为原始表?

步骤1:原始表

object prob 
dog 
dog 
cat 
cat 
book 
book 

步骤2:计数对象

dog 2 
cat 2 
book 2 

步骤3:计算所述概率

dog 2/(2+2+2) 
cat 2/(2+2+2) 
book 2/(2+2+2) 

第4步:将概率值返回原始值

Object prob 
dog  2/6 
dog  2/6 
cat  2/6 
cat  2/6 
book 2/6 
book 2/6 
+0

那么,查询的一部分是你有问题? – mabi 2014-09-11 08:39:37

回答

1

你到底在问什么?

你想知道如何计算每个项目并插入每个项目的概率?

更新:

这段代码会做你的要求。只需将#temp替换为您自己的表格即可。

DECLARE @object nvarchar(max) 

    DECLARE object_cursor CURSOR FOR 
     SELECT object 
     FROM #temp 

    OPEN object_cursor 

    FETCH NEXT FROM object_cursor 
    INTO @object 

    WHILE @@FETCH_STATUS = 0 
    BEGIN 

     UPDATE #temp 
     SET prob = (
        SELECT 
         COUNT(object) 
        FROM #temp 
        WHERE object = @object   
     ) 

     FETCH NEXT FROM object_cursor 
     INTO @object 

    END 
    CLOSE object_cursor 
    DEALLOCATE object_cursor 

    UPDATE #temp 
    SET prob = prob/(select SUM(prob) from #temp) 
+0

是的,但这需要更多的信誉点,我目前有;-) – ssn 2014-09-11 08:54:29

+0

Steffen是正确的,现在我想使用mysql使用单个查询,我可以执行结果如第4步,任何人有想法? – 2014-09-11 08:55:20

+0

谢谢STeffen,我会先试试这个,是否有更简单的解决方案? – 2014-09-11 08:59:09