数据库
CREATE TABLE `ware` (
  `id` mediumint(8) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records 
-- ----------------------------
INSERT INTO `kbl_ware` VALUES ('00000001','蛙妈妈分苹果','2011-05-27 10:30:10');
INSERT INTO `kbl_ware` VALUES ('00000002', '快乐拼拼','2011-05-27 10:53:00');
INSERT INTO `kbl_ware` VALUES ('00000003', '我爱我家','2011-05-27 10:57:53');
//周点击表, 每周游戏的点击数
CREATE TABLE `week_click` (
  `id` mediumint(8) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `ware_id` mediumint(9) DEFAULT NULL,
  `click_count` mediumint(9) NOT NULL,
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;INSERT INTO `week_click` VALUES ('00000001', '1', '100', '2011-05-24 11:47:14');
INSERT INTO `week_click` VALUES ('00000002', '2', '453', '2011-05-27 11:48:07');
INSERT INTO `week_click` VALUES ('00000003', '2', '145', '2011-05-20 00:00:00');
INSERT INTO `week_click` VALUES ('00000004', '2', '56', '2011-05-14 00:00:00');
INSERT INTO `week_click` VALUES ('00000005', '2', '121', '2011-05-07 00:00:00');
INSERT INTO `week_click` VALUES ('00000006', '2', '12', '2011-04-30 00:00:00');
INSERT INTO `week_click` VALUES ('00000007', '2', '123', '2011-04-23 00:00:00');
INSERT INTO `week_click` VALUES ('00000008', '2', '123', '2011-04-15 00:00:00');
统计每个游戏,每周(本周求和),每月(最近4周的点击数求和),和总的点击数
下面是我写的一个,但是只能求出单独的一个游戏的点击(传递一个游戏的编号,红色的部分标出),现在的需求是要统计出,所有游戏的点击,求高手
select ware_id,sum(click_count) as allclick,(select sum(click_count) from week_click where  ware_id =2 and addtime >= (date_add(now(),
 interval -1 week)) ) as week_click,(select sum(click_count) from week_click where  ware_id =
and addtime >= (date_add(now(), interval -1 month)) ) as month_click from week_click group by ware_id

解决方案 »

  1.   

    总的(游戏id  点击量) A
    left join 本周(游戏id  点击量) B
    on  A.游戏id=B.游戏id
    left join 本月(游戏id  点击量) C
    on B.游戏id=C.游戏id
      

  2.   

    select *,
    (select sum(click_count) from week_click where ware_id=ware.id and week(addtime)=week(now())) as `本周`,
    (select sum(click_count) from week_click where ware_id=ware.id and week(addtime) between week(now()) and week(now())-4) as `每月`,
    (select sum(click_count) from week_click where ware_id=ware.id ) as `总的点击数`
    from ware
      

  3.   

    SELECT *,WEEK(A.ADDTIME),B.AA AS `本周`,SA AS `总的点击数`,
    (SELECT SUM(click_count) FROM week_click WHERE A.id=ware_id AND WEEK(ADDTIME) BETWEEN WEEK(A.ADDTIME)-4 AND WEEK(A.ADDTIME)) AS `每月`
      
     FROM `kbl_ware` A LEFT JOIN
     (SELECT ware_id,WEEK(aa.ADDTIME) AS SS ,SUM(aa.click_count) AS AA FROM week_click aa GROUP BY ware_id,WEEK(aa.ADDTIME)) B
     ON WEEK(A.ADDTIME)=B.SS AND A.id=B.ware_id
     LEFT JOIN
      (SELECT ware_id,SUM(click_count) AS SA FROM week_click GROUP BY ware_id) C
     ON A.id=C.ware_id