MySQL COUNT DISTINCT


144

어제 내 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)

어떤 이유로 이것은 동일한 사이트 ID로 여러 결과를 가져 오는 것입니다 .... 어떻게 구별되는 site_id cp 로그인 만 가져오고 계산합니까?

답변:


299
 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

17
당신이 "어떻게 서로 다른 사용자 ID를 세는"와 같은 질문을 얻고 대답은 "그냥 때문에 SQL 사랑 Count(Distinct user_id)"

23

사무용 겉옷

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당신이 후입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.