我想做一个2019年1月每个用户 comments 数的柱状图(包括一次没有 comments 的)

我正在使用的表如下所示:

id Name
1 Jose
2 Pedro
3 Juan
4 Sofia
user_id Comment Date
1 Hello 2018-10-02 11:00:03
3 Didn't Like it 2018-06-02 11:00:03
1 Not so bad 2018-10-22 11:00:03
2 Trash 2018-7-21 11:00:03

我想我把它复杂化了.但我的try 是:

#Here I'm counting how much comments are per person that have commented. 

CREATE TABLE aux AS
SELECT user_id, COUNT(user_id)
FROM Undostres
GROUP BY user_id;

#With the following code, I end up with a table with the missing values (ids that haven't commented) 

CREATE TABLE Test AS
SELECT DISTINCT user_id +1
FROM aux
WHERE user_id + 1 NOT IN (SELECT DISTINCT user_id FROM aux);

ALTER TABLE Test RENAME COLUMN user_id +1 TO  ;
INSERT INTO Undostres (user_id) 
SELECT user_id  FROM Test;

当我try 用其他名称重命名user\u id+1时,它返回一个错误.所以我不能继续.

任何建议都会很好!

推荐答案

我会这样做:

CREATE TABLE aux AS
SELECT Users.user_id, COUNT(Undostres.user_id) AS count
FROM Users 
LEFT OUTER JOIN Undostres USING (user_id)
GROUP BY Users.user_id;

我假设您有一个表Users,其中列出了所有用户,无论他们是否发表了任何 comments .在这种情况下,左侧外部联接很有帮助,因为如果给定用户没有注释,则该用户仍然是结果的一部分,并且计数为0.

Mysql相关问答推荐

更新MySQL表中子记录的序号

MySQL生成的整型计算可以为空吗?

如何防止程序中计数器出错

MySQL滑动窗口动态间隔?

Golang中使用Gorm的Where条件转义字符无法正常工作的问题

是否可以使用 IN 或 NOT IN 从没有关联其他表中任何行的表中返回这些名称?

Mysql 查询返回未定义的 node.js

时间戳上滚动窗口的 SQL 计数不同

即使在某些表中不匹配,如何从 MySQL 中的多个表中 Select 所有记录

Mysql时间序列数据的最小值和最大值

go&mysql&docker 拒绝连接

MYSQL 删除两个已知字符串之间的字符串

过滤查询结果

使用数据表的直方图(SQL 查询)

MySQL函数查找两个日期之间的工作日数

如何使用 SQL 数据库中的经纬度查找最近的位置?

我可以在单个 Amazon RDS 实例上创建多少个数据库

如何将 mysqldump 的输出拆分为较小的文件?

匹配 IN 子句中的所有值

邮箱地址可接受的字段类型和大小?