/ / MySQL group por multiple com condições médias e distintas - mysql, group-by, distinct, average

Grupo MySQL por múltiplos com condições médias e distintas - mysql, group-by, distinto, médio

Eu estou tentando combinar várias condições dentrouma única instrução MySQLi, que deve calcular o número médio de visitantes mensalmente a partir de um banco de dados de registros de visitantes que registra cada endereço IP em cada página de cada site no servidor.

Isso é um pouco mais difícil, pois requerusando uma função DISTINCT para separar vários endereços IP registrados visitando diferentes páginas do mesmo site, em vez de contá-los como dois ou mais visitantes individuais.

Aqui está uma captura de tela da tabela do banco de dados: insira a descrição da imagem aqui

Eu tentei o script a seguir, mas parece não receber nenhuma saída?

$getAVERVISITORS = mysqli_fetch_assoc(mysqli_query($conn, "SELECT AVG(count(distinct ip_address)) as average_monthly_visitors FROM all_website_stats WHERE website_ref = "$account_ref" GROUP BY MONTH(date_last_viewed)"));

$getAVERVISITORS = $getAVERVISITORS["average_monthly_visitors"];

Os resultados precisam ser agrupados por mês date_last_viewed para exibir quantos endereços IP distintos visitaram um determinado website_ref em média a cada mês?

Eu estou esperando que isso faça sentido para alguém explicar onde eu posso estar errado?

Respostas:

0 para resposta № 1

Você basicamente tem isso, exceto que você não pode fazer o avg () na mesma linha. Você precisa fazer uma subconsulta e calcular o resultado. Algo como isso deve funcionar:

SELECT AVG(counter) AS average_monthly_visitors from (SELECT count(distinct(ip_address)) as counter FROM all_website_stats WHERE website_ref = "$account_ref" GROUP BY MONTH(date_last_viewed)) Temp;