2011-05-24 38 views
0

我有一个表user_id,time_stamp和活动,我用它来记录审计跟踪的用户操作。计数问题

如何计算唯一的user_id其中time_stamp = 0时的数目,当可能有多个这样的行,仅在活动文本中有所不同?

回答

4

听起来像是你需要使用:

SELECT COUNT(DISTINCT t.user_id) 
    FROM YOUR_TABLE t 
    WHERE t.time_stamp = 0 
GROUP BY t.activity 
+0

+1和答案。谢谢。顺便说一句,为什么我需要“分组”? – Mawg 2011-05-24 12:25:43

+0

@Mawg:“GROUP BY”为聚集函数提供上下文(在本例中为“COUNT”),否则计数将针对表中的所有记录。 – 2011-05-24 14:33:51

+0

我不认为这真的有效。按活动分组意味着对于每项独特的活动,您可以获得不同用户的数量。放下这个组,它就会工作。 – jmoreno 2011-05-24 16:03:54

1
select count(*) 
FROM (select t.user_id, count(*) actions 
     FROM table t 
     where t.time_stamp = 0 
     group by t.user_id) u 

应该为你做到这一点(不是最直接的方法,但它显示了如何做几个不同的东西)。

+0

+1谢谢你的帮助 – Mawg 2011-05-24 13:13:37