【问题标题】:Group by Date then by other column按日期分组,然后按其他列
【发布时间】:2014-02-24 10:20:41
【问题描述】:

这是一个示例数据库摘录,因为我认为我并没有说清楚。一项更改包括多行。我想将其视为一个实例。

+----+---------+---------------------+
| id | user_id | created_at          |
+----+---------+---------------------+
|  1 |       2 | 2013-10-30 12:47:04 |
|  2 |       2 | 2013-10-30 12:47:04 |
|  3 |       2 | 2013-10-30 12:47:04 |
|  4 |       2 | 2013-10-30 16:38:30 |
|  5 |       2 | 2013-10-30 16:38:30 |
|  6 |       2 | 2013-10-30 16:38:30 |
|  7 |       4 | 2013-10-30 20:49:40 |
+----+---------+---------------------+

我想要的输出是

user_id |计数
2|2
4|1

因为 user_id 2 有两个基于 created_at 的编辑块,而用户 3 有一个。

--- 上一篇文章 ---

我有一个包含要编辑的记录的表。它对表单的每次更改都有一个新行,在更新时它将针对更改的每一行保存更新的时间戳。它还为转换器保存user_id

我想计算每个用户的完整编辑次数。

为此,我想我需要按时间戳分组(对于不太可能同时出现两个的编辑来说都是一样的),然后计算用户 ID 的出现。我无法让它工作。

有什么想法吗?

【问题讨论】:

  • 如果您的选择中不包含时间戳,则不需要对其进行分组
  • 您可以发布您的代码以便我们查看问题吗?

标签: mysql group-by mariadb


【解决方案1】:

如果您想计算用户的编辑次数,您应该按用户 ID 分组,例如:

select count(occurence) from tableName group by userId

这将从表中获取整个时间范围内的所有用户。

对于特定用户或特定时间段,您可以在 where 子句中提及。

如果您将按时间戳分组,那么您将获得在该特定时间所做的所有编辑。

如果您将按时间戳 + 用户分组,那么它将给出当时每个用户所做的所有编辑。

【讨论】:

    【解决方案2】:

    您可以通过这种方式GROUP BY 使用更多字段:

    GROUP BY user_id, timestamp
    

    【讨论】:

      【解决方案3】:

      我想我有。它需要一个子查询。

      MariaDB [dartmoor]> select user_id,count(user_id) from (select user_id, created_at from revisions group by created_at) as r group by user_id;

      +---------+----------------+
      | user_id | count(user_id) |
      +---------+----------------+
      |       2 |            199 |
      |       3 |              2 |
      |       4 |              1 |
      +---------+----------------+
      3 rows in set (0.00 sec)
      

      【讨论】:

        【解决方案4】:

        我想你想要:

        SELECT user_id, COUNT(DISTINCT created_at) AS count
        FROM revisions 
        GROUP BY user_id ;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-06-06
          • 2018-06-15
          • 1970-01-01
          • 2012-06-28
          • 2018-04-15
          • 2021-05-13
          • 1970-01-01
          • 2021-06-02
          相关资源
          最近更新 更多