2011-11-16 120 views
0

我使用的命令計算在MySQL

select video_info count(distinct src_ip) from videoinfo 
    group by video_info 
    order by count(distinct src_ip) DESC 

來獲取數據的2列,第一列表示每個視頻項目,第二列記錄他們有多少次被下載的標識符。

我也想計算一下,例如,5%的視頻下載了兩次,10%的視頻下載了10次,然後將百分比數字和下載時間記錄到兩個數組中。

Mysql是否支持這種計算?或者我需要切換到Python來做到這一點?如果是這樣,如何在Python中做到這一點?

回答

2

在Python中你可以使用這個:

cur.execute("SELECT video_info, COUNT(distinct src_ip) " 
      "FROM videoinfo " 
      "GROUP BY video_info " 
      "ORDER BY COUNT(DISTINCT src_ip) DESC") 

counter = dict(cur) 
for n in xrange(1, max(counter.itervalues()) + 1): 
    perc = 100./sum(1 for nb in counter.itervalues() if nb == n)/len(counter) 
    if perc: 
     print '%.f%% videos have been downloaded %d times' % (perc, n) 

隨着counter = {'a': 1, 'b': 1, 'c': 2, 'd': 1, 'e': 2, 'f': 3}這個打印:

50% videos have been downloaded 1 times 
33% videos have been downloaded 2 times 
17% videos have been downloaded 3 times