Я пытаюсь собрать вчерашнее количество отдельных посещений в моем ЦП, а затем подсчитать их.
SELECT
DISTINCT `user_id` as user,
`site_id` as site,
`ts` as time
FROM
`cp_visits`
WHERE
ts >= DATE_SUB(NOW(), INTERVAL 1 DAY)
По какой-то причине это вытаскивает несколько результатов с одним и тем же идентификатором сайта .... как мне получить и подсчитать только отдельные входы site_id cp?
Count(Distinct user_id)
»В общем и целом
SELECT COUNT(DISTINCT `site_id`) as distinct_sites FROM `cp_visits` WHERE ts >= DATE_SUB(NOW(), INTERVAL 1 DAY)
Или на сайт
SELECT `site_id` as site, COUNT(DISTINCT `user_id`) as distinct_users_per_site FROM `cp_visits` WHERE ts >= DATE_SUB(NOW(), INTERVAL 1 DAY) GROUP BY `site_id`
Наличие
time
столбца в результате не имеет смысла - поскольку вы агрегируете строки, отображение одного конкретногоtime
значения не имеет значения, если только это не тотmin
илиmax
вы после.источник
Вам нужно использовать предложение group by.
SELECT site_id, MAX(ts) as TIME, count(*) group by site_id
источник