2014-09-11 68 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