2013-06-04 102 views
0

統計彙總我運行下面的查詢獲得平均喜歡每個類別計算暗號

neo4j-sh (?)$ START n=node:node_auto_index(type = "U") match n-[r:likes]->()-[:mapsTo]->items return AVG(r.count) as AVGLIKES, items.name as CATEGORY; 
==> +------------------------------------------------------+ 
==> | AVGLIKES   | CATEGORY      | 
==> +------------------------------------------------------+ 
==> | 7.122950819672131 | "Culture"      | 
==> | 1.3333333333333333 | "Food & Drinks"     | 
==> | 2.111111111111111 | "Albums"      | 
==> | 2.581081081081081 | "Movies"      | 
==> | 2.1    | "Musicians"      | 
==> | 7.810126582278481 | "Culture Celebs"    | 
==> | 3.1206896551724137 | "TV Shows"      | 
==> | 1.0    | "Apps/Games"     | 
==> | 4.0256410256410255 | "Cars"       | 

但AVG是一個內置的功能,我怎麼計算標準偏差和其他統計彙總爲每個類別。我正在尋找類似於「GROUP BY」的SQL,它會將每個類別的所有內容分組,然後我可以編寫一些代碼或者有更好的方法來完成。

回答

0

去年晚些時候我添加了percentile_disc,percentile_cont聚合函數。我想他們會願意合併std dev的函數。理論上(我認爲,我的統計數據是生疏的),您可以根據一些百分位樣本和平均值來計算標準偏差。所以,除了標準偏差之外,你還在尋找什麼?

更新: 我爲STDEV/STDEVP聚合函數pull請求:https://github.com/neo4j/neo4j/pull/859

+0

範圍和中位數是必不可少的。但我怎麼能自己做到這一點。例如sd = sqrt(sum(x-mean(x))^ 2 /(n-1))。問題是如果我使用collect,我仍然需要mean(x),所以我不知道如何做到這一點 – user1848018

+0

中位數與percentile_disc(x,.5)相同,範圍是max(x)和分(X)。你可以使用如下的reduce來模擬集合的平均值:reduce(total = 0,x in coll:total + x)/ length(coll)。 –

+0

我開始處理stdev和stdevp的請求。 –