fake-2014 0 Denunciar post Postado Janeiro 3, 2014 Pessoal, muitos sites fazem um rank comparando as medias de downloads de arquivos e montando um rank, indicando a posição atual e quantas posições o resultado subiu ou desceu.um site que utiliza este método é o superdownloads para classificar e criar um rank dos arquivos mais baixados, veja a imagem abaixo Veja acima por exemplo o 15 do rank... neste caso é o software Avira e ele perdeu 2 posições em relação a contagem anterior... outro exemplo é o numero 11... neste caso o Ares... e nesse ele subiu 3 posições. Gostaria então de saber como montar esse rank,Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Janeiro 3, 2014 Na verdade esses sites de downloads tem bastante informações sobre o download. Ele tem uma tabela só para arquivos baixados, nesta tabela pode ser salva as as seguintes informações: id idSoftware DataDownload IpUsuario E por ai vai, depois disso é só fazer um select básico para trazer as informações, neste select ele traz os dados desta semana e os da semana passada, ordena pelos mais baixados desta semana e apenas compara a posição do software nas duas semanas e calcula a diferença... Não nada muito complexo, é até muito simples.... Compartilhar este post Link para o post Compartilhar em outros sites
fake-2014 0 Denunciar post Postado Janeiro 3, 2014 Roberto agradeço até o momento a sua contribuição, entendi perfeitamente a logica que vc me passou mais não sei coloca-las em pratica no mysql, poderia me ajudar com um exemplo? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Janeiro 3, 2014 Você já tem essa tabela pronta? Se não tiver, poste o que você tem pronto, para partimos do que você já tem... Compartilhar este post Link para o post Compartilhar em outros sites
fake-2014 0 Denunciar post Postado Janeiro 3, 2014 Opa, vou seguir como vc falou, comecei a criar um online aquihttp://sqlfiddle.com/#!2/50fb2/3 desde já agradeço, Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Janeiro 3, 2014 Olha ficou esta estrutura para testes: CREATE TABLE `downloads` ( `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `idSoftware` bigint(20) unsigned NOT NULL DEFAULT '0', `dataDownload` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`ID`), KEY `idSoftware` (`idSoftware`), KEY `dataDownload` (`dataDownload`) ) ENGINE=InnoDB AUTO_INCREMENT=192422 DEFAULT CHARSET=utf8; INSERT INTO `downloads` (`ID`,`idSoftware`,`dataDownload`) VALUES (1,1,'2013-12-20 17:58:18'), (2,7,'2013-12-20 18:01:02'), (3,9,'2013-12-27 18:17:13'), (4,14,'2013-12-28 18:20:37'), (5,112,'2013-12-26 18:45:37'), (6,1878,'2013-12-23 11:00:21'), (7,9, '2013-12-27 18:17:13'), (8,9, '2013-12-21 18:17:13'); E aqui o select que traz todos os softwares na ordem da semana atual: SELECT a.idsoftware, count(a.id) as qtde FROM downloads a where week(a.datadownload) = week(now()) group by a.idsoftware order by qtde desc; Ai você também executa este select para trazer os dados da semana anterior: SELECT a.idsoftware, count(a.id) as qtde FROM downloads a where week(a.datadownload) = if (week(now()) = 0, week(concat(Date_Format(now(), '%Y') - 1, '-12-31')), week(now())) group by a.idsoftware order by qtde desc; Dai então é só você comparar a posição dos software nesta semana e na semana anterior e subtrair ((Pos_seman_atual - Pos_seman_ant) * -1) ai ele te retorna a diferença desta semana e da semana passada... Mas isso tem que ser feito na sua linguagem... Pelo menos eu não conheço nenhum método pra fazer isso via sql... Compartilhar este post Link para o post Compartilhar em outros sites
fake-2014 0 Denunciar post Postado Janeiro 3, 2014 Entendi mano, vou tentar entender a logica aqui. Já é um começo! Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Janeiro 3, 2014 http://forum.imasters.com.br/topic/513703-buscar-posio-em-ranking/ Veja se ajuda Compartilhar este post Link para o post Compartilhar em outros sites