首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL计数不重复

MySQL计数不重复
EN

Stack Overflow用户
提问于 2011-04-21 07:03:23
回答 3查看 328.4K关注 0票数 149

我正在尝试收集昨天我的cp中的不同访问次数,然后计算它们。

代码语言:javascript
复制
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....how的多个结果,我是否只拉取并计算不同的site_id cp登录次数?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-21 07:15:13

代码语言:javascript
复制
 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
票数 310
EN

Stack Overflow用户

发布于 2011-04-21 07:15:33

总体上

代码语言:javascript
复制
SELECT
       COUNT(DISTINCT `site_id`) as distinct_sites
  FROM `cp_visits`
 WHERE ts >= DATE_SUB(NOW(), INTERVAL 1 DAY)

或每个站点

代码语言:javascript
复制
  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是无关紧要的,除非它是您想要的minmax

票数 25
EN

Stack Overflow用户

发布于 2011-04-21 07:06:17

需要使用group by子句。

代码语言:javascript
复制
SELECT  site_id, MAX(ts) as TIME, count(*) group by site_id
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5737628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档