2011-11-16 6 views
0

에 나는 데이터의 2 열을 가져올 명령계산이 MySQL을

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

을 사용하고, 첫 번째 열에는 각 비디오 항목들이 다운로드 한 횟수를 두 번째 열 레코드에 대한 식별자를 나타냅니다.

예를 들어 동영상의 5 %가 두 번 다운로드되었고 10 %의 동영상이 10 번 다운로드 된 다음 계산 된 숫자와 다운로드 시간이 두 개의 배열에 기록됩니다.

이러한 계산을 지원합니까? 아니면 파이썬으로 전환해야합니까? 그렇다면 파이썬에서 어떻게 할 것인가?

답변

2

파이썬에서이 사용할 수 있습니다 counter = {'a': 1, 'b': 1, 'c': 2, 'd': 1, 'e': 2, 'f': 3}으로

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) 

을이 인쇄 :

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