2014-02-24 57 views
0

下面是一个样本数据库提取,因为我不认为我是让自己清楚。一个更改包含多行。我想把它当作一个例子。按日期分组然后按其他列

+----+---------+---------------------+ 
| 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的发生。我无法让它工作。

任何想法?

+0

如果不包括在您选择的时间戳,你不需要它组可以 – AHaberl

+0

您发布您的代码,所以我们可以看到这个问题? – user3223048

回答

0

您可以GROUP BY有更多的领域是这样的:

GROUP BY user_id, timestamp 
2

如果要通过用户来算编辑的数量,你应该通过用户ID喜欢组:

select count(occurence) from tableName group by userId 

这会从取所有用户在整个时间范围内的表格。

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

如果您将时间戳组,那么你将得到所有已经在特定时间所做的编辑。

如果您将时间戳+用户群,那么它将给所有已经在每个用户那时明智取得的编辑。

0

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

MariaDB的[达特穆尔]>选择USER_ID,计数(USER_ID)从(选择USER_ID,通过从created_at修订组created_at),如通过USER_ID R基团;

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

我想你想:

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

更好!谢谢。 – latitudehopper