我有一个简单的表格posts
,如
user_id
created
现在,我想总结每月的帖子数量,我使用查询
SELECT DATE_FORMAT(`created`,'%Y-%m') AS d,
count(*) AS total
FROM posts
GROUP BY d
ORDER BY d;
但是,如果我想知道唯一身份用户的数量,那也没关系。帖子每月(即user_id),怎么做?
答案 0 :(得分:0)
您必须按user_id
分组:
SELECT
DATE_FORMAT(`created`,'%Y-%m') AS d,
user_id AS u,
count(*) AS total
FROM posts
GROUP BY DATE_FORMAT(`created`,'%Y-%m'), user_id
ORDER BY d;
这将为您提供给定日期的每个用户的帖子。我想其他答案对你需要的更为正确。
此外,我不确定您是否可以GROUP BY
别名d
。在SQL Server中,这是一个错误。我对MySql不太熟悉。
答案 1 :(得分:0)
如果通过“每月唯一身份用户的帖子数”,则表示您希望每个月都知道至少有一个帖子的不同用户数(不同的user_id):
SELECT
DATE_FORMAT(`created`,'%Y-%m') AS d,
COUNT(DISTINCT user_id) AS total
FROM posts
GROUP BY d
ORDER BY d;
如果你的意思是每个月,至少有一个帖子的不同用户列表,然后计算这个数字:
SELECT
user_id,
DATE_FORMAT(`created`,'%Y-%m') AS d,
COUNT(*) AS total
FROM posts
GROUP BY d, user_id
ORDER BY d, user_id;