Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL多组\u concat,每月计数_Mysql_Sql - Fatal编程技术网

MySQL多组\u concat,每月计数

MySQL多组\u concat,每月计数,mysql,sql,Mysql,Sql,我有一个MySQL表(place_analytics),我想使用group_concat按地点id获取每个月的计数 我试过这个 SELECT place_id, GROUP_CONCAT( DISTINCT MONTHNAME(STR_TO_DATE(MONTH(created_at), '%m')) ) AS months, COUNT(*) AS place_count FROM place_analytics GROUP BY place_id 这给了我几乎正确的结果 如果你

我有一个MySQL表(place_analytics),我想使用group_concat按地点id获取每个月的计数

我试过这个

SELECT place_id,
GROUP_CONCAT(
    DISTINCT MONTHNAME(STR_TO_DATE(MONTH(created_at), '%m'))
) AS months,
COUNT(*) AS place_count
FROM place_analytics
GROUP BY place_id
这给了我几乎正确的结果

如果你看第三行,也就是

place_id | months      | place_count
4        | July, June  | 2
计数是所有月份的总和,即7月、6月

问题: 是否有任何方法可以让我使用group_concat每月统计一次,如下所示

place_id | months      | place_count
4        | July, June  | 1,1
或者这种格式也可以

place_id | months_and_count
4        | July,1 SEPARATOR June,1





CREATE TABLE `place_analytics` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `place_id` int(11) NOT NULL,
  `user_id` int(11) DEFAULT NULL,
  `is_followed` tinyint(4) NOT NULL DEFAULT '0',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

-- ----------------------------
-- Records of place_analytics
-- ----------------------------
INSERT INTO `place_analytics` VALUES ('1', '10', '6', '0', '2017-06-01 15:45:04');
INSERT INTO `place_analytics` VALUES ('2', '98', '1', '1', '2017-06-01 15:45:39');
INSERT INTO `place_analytics` VALUES ('3', '98', '3', '1', '2017-06-01 15:46:24');
INSERT INTO `place_analytics` VALUES ('4', '10', '5', '1', '2017-06-01 17:51:27');
INSERT INTO `place_analytics` VALUES ('5', '98', '5', '1', '2017-06-01 17:53:48');
INSERT INTO `place_analytics` VALUES ('6', '98', '5', '1', '2017-06-08 15:43:27');
INSERT INTO `place_analytics` VALUES ('7', '1', '5', '1',  '2017-06-08 15:47:56');
INSERT INTO `place_analytics` VALUES ('8', '2', '5', '1',  '2017-06-08 16:00:43');
INSERT INTO `place_analytics` VALUES ('9', '4', '5', '1',  '2017-06-09 16:21:19');
INSERT INTO `place_analytics` VALUES ('10', '4', '2', '1', '2017-07-13 14:29:45');
尝试上面的查询。

尝试下面的查询:

SELECT p.place_id,
GROUP_CONCAT(
    DISTINCT MONTHNAME(STR_TO_DATE(MONTH(p.created_at), '%m'))
) AS months,
(SELECT GROUP_CONCAT(cnt) FROM (
    SELECT COUNT(*) AS cnt FROM place_analytics GROUP BY place_id, MONTH(created_at)
) a)  AS place_count
FROM place_analytics p
GROUP BY place_id;

这是

这里的大多数人想要的是格式化文本,而不是图像。@jarlh,很抱歉,我已经用模式编辑了我的问题。
SELECT p.place_id,
GROUP_CONCAT(
    DISTINCT MONTHNAME(STR_TO_DATE(MONTH(p.created_at), '%m'))
) AS months,
(SELECT GROUP_CONCAT(cnt) FROM (
    SELECT COUNT(*) AS cnt FROM place_analytics GROUP BY place_id, MONTH(created_at)
) a)  AS place_count
FROM place_analytics p
GROUP BY place_id;