MySQL Group需要帮助

时间:2014-08-22 11:19:06

标签: mysql sql wordpress

我尝试为我的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只需取值#34 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 |
|---------------------------------------------------|

所以问题是,我如何对数据进行分组,以便获得每天每个横幅的总观看次数,总点击次数和总悬停事件?

1 个答案:

答案 0 :(得分:2)

我认为你想要条件聚合:

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;