MySQL - 仅在唯一时计数

时间:2015-03-30 08:22:00

标签: mysql sql

我有一个包含对象显示/点击统计信息的表格 表格包含以下列:id,objectId,pageUrl,event('show'或'click') 例如:

id, objectId, pageUrl,  event  
1,    1,      /cars/,  show  
2,    1,      /cars/,  show  
3,    1,      /items/, show  
4,    2,      /cars/,  show  
5,    2,      /items/, show  

我能以简单的方式获得具有唯一pageUrl的每个对象的计数吗?

数据集的结果必须是:

objectId, counter  
1,        2  
2,        2  

对于id为1的对象,有3条记录,但是pageUrl / cars /出现两次,因此counter必须仅用于唯一的url。

4 个答案:

答案 0 :(得分:5)

尝试此查询:

SELECT objectId, COUNT(DISTINCT(pageUrl)) AS 'counter'
FROM Table
GROUP BY objectId

答案 1 :(得分:0)

SELECT objectId, COUNT(*) AS count FROM ( SELECT objectId,pageUrl FROM table GROUP BY objectId,pageUrl ) z GROUP BY objectId

答案 2 :(得分:0)

您可以像这样使用group bycount

SELECT count(distinct pageUrl) from object group by objectId

答案 3 :(得分:0)

首先,我生成了内部选择查询,以对具有相同objectIdpageUrl的记录进行分组。最后,我计算了pageURLobjectId

SELECT 
      objectId, 
      COUNT(pageUrl) 
FROM (SELECT objectId,pageUrl FROM table GROUP BY objectId,pageUrl) z 
GROUP BY objectId