我试图在昨天收集我的cp中的不同访问次数,然后计算它们.
SELECT
DISTINCT `user_id` as user,
`site_id` as site,
`ts` as time
FROM
`cp_visits`
WHERE
ts >= DATE_SUB(NOW(), INTERVAL 1 DAY)
Run Code Online (Sandbox Code Playgroud)
出于某种原因,这是使用相同的站点ID提取多个结果....我如何只拉取和计算不同的site_id cp登录?
ype*_*eᵀᴹ 289
Select
Count(Distinct user_id) As countUsers
, Count(site_id) As countVisits
, site_id As site
From cp_visits
Where ts >= DATE_SUB(NOW(), INTERVAL 1 DAY)
Group By site_id
Run Code Online (Sandbox Code Playgroud)
Ric*_*iwi 21
总体
SELECT
COUNT(DISTINCT `site_id`) as distinct_sites
FROM `cp_visits`
WHERE ts >= DATE_SUB(NOW(), INTERVAL 1 DAY)
Run Code Online (Sandbox Code Playgroud)
或者每个站点
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`
Run Code Online (Sandbox Code Playgroud)
在time结果中包含列没有意义 - 因为您正在聚合行,显示一个特定的内容time是无关紧要的,除非它是您min或max之后.
您需要使用group by子句.
SELECT site_id, MAX(ts) as TIME, count(*) group by site_id
Run Code Online (Sandbox Code Playgroud)