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
SQLが好きです。「個別のユーザーIDをカウントするにはどうすればよいですか」などの質問があり、答えは「Count(Distinct user_id)」だけです
Tim

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結果の列は意味がありません-あなたが特定の1つを示す、行を集約しているためと、timeそれがある場合を除き、無関係であるminか、maxあなたが後にしています。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.