[英]MySQL Group By assistance need it
我尝试为我的WordPress安装创建一个随机的横幅插件,并且我也想从横幅中提取一些统计信息。
为了执行该任务,我创建了一个具有以下签名的表:
CREATE TABLE `bb_banner_statistics` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`post_id` bigint(20) DEFAULT NULL,
`event` varchar(15) DEFAULT NULL,
`value` tinyint(4) DEFAULT NULL,
`created` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=latin1
其中post_id
是横幅ID, event
是我要跟踪的事件(即,已查看,悬停,单击等), value
仅取值“ 1”(我这样做是为了简单地汇总特定事件类型),并且created
的日期是事件的日期时间。
因此,在示例中,表可以包含类似以下的值:
|---------------------------------------------------|
| ID | POST_ID | EVENT | VALUE | CREATED |
|---------------------------------------------------|
| 1 | 62 | view | 1 | 2014-4-12 11:45:12 |
| 2 | 63 | view | 1 | 2014-4-12 11:45:12 |
| 3 | 64 | view | 1 | 2014-4-12 11:45:12 |
| 4 | 62 | hover | 1 | 2014-4-12 11:46:18 |
| 5 | 63 | hover | 1 | 2014-4-12 11:46:22 |
| 6 | 63 | click | 1 | 2014-4-12 11:46:23 |
| 7 | 62 | hover | 1 | 2014-4-12 11:46:23 |
| 8 | 62 | view | 1 | 2014-4-13 09:20:17 |
|---------------------------------------------------|
所以问题是,如何将我的数据分组以便获得每天每个横幅广告的总观看次数,总点击次数和总悬停事件?
我认为您需要条件聚合:
select date(created) as thedate, post_id,
sum(event = 'click') as numclicks,
sum(event = 'view') as numviews,
sum(event = 'hover') as numhovers
from bb_banner_statistics
group by date(created), post_id;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.