подсчет уникальных ежемесячных посетителей для отображения на графике

У меня есть таблица, которая регистрирует посетителей по IP-адресу, дате первого посещения и дате последнего посещения для нескольких веб-сайтов. Обе даты представлены в формате datetime 2016-08-07 12:14:44, Каждая запись относится к ссылке на сайт.

Я пытаюсь перечислить последние 6 месяцев по годам и месяцам, как (Y-m)

2016-08
2016-07
2016-06

так далее…
Мне удалось сделать это, хотя я борюсь за код для подсчета различных посетителей, вот что я до сих пор:

$this_month = date('Y-m');

$count = mysqli_query($conn, "SELECT COUNT(ip_address)) as count FROM `all_website_stats` WHERE `website_ref` = '$show_website_ref' AND EXTRACT(YEAR_MONTH FROM date_first_viewed) = '$this_month' AND `date_first_viewed` = `date_last_viewed`");
$rowcount=mysqli_num_rows($count);
echo $rowcount;

Это будет выполнено 6 раз, чтобы получить окончательное количество посетителей, которые не вернулись. Хотя этот код возвращает ошибки. И когда мне удалось заставить это работать, это только посчитало 1 или же 0 что неверно.

Он показал ошибку, как только я добавил date_first_viewed = date_last_viewed что, наверное, неправильно. Хотя мне нужно убедиться, что date_first_visited такой же как date_last_visited в базе данных, иначе результат — возвращающийся посетитель.

Может ли кто-нибудь указать мне правильное направление и сообщить, что я делаю неправильно? Я не очень хорош в таких проверках даты с MySQL.

0

Решение

Вы говорите, что хотите всех уникальных посетителей в месяц. Однако я бы описал ваш запрос как получение всех разовых посетителей в месяц. Если это так, кажется, вам нужно GROUP BY:

SELECT EXTRACT(YEAR_MONTH FROM date_first_viewed) as yyyymm,
COUNT(ip_address)) as count
FROM `all_website_stats` aws
WHERE `website_ref` = '$show_website_ref' AND
`date_first_viewed` = `date_last_viewed`
GROUP BY EXTRACT(YEAR_MONTH FROM date_first_viewed);

Вы можете добавить условие к WHERE предложение, чтобы указать период времени для возвращаемых строк.

WHERE Предложение будет выглядеть примерно так:

WHERE date_first_viewed >= '2016-01-01'
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]