【问题标题】:Counter number of items within each time period in mysqlmysql中每个时间段内的项目计数
【发布时间】:2012-01-11 00:47:30
【问题描述】:

我有一个用户列表,每个用户在注册时都分配了注册时间戳。

如何计算我的整个用户列表(跨越 23 个月)每个月有多少用户注册。

所以输出应该只是两列,一列是月份+年份,另一列是该月注册的用户数。

有人可以建议一个查询来做到这一点吗?

示例数据

INSERT INTO `users` (`id`, `regdate`) VALUES
(861490, 1314021552),
(944392, 1317760487),
(674263, 1311119415),
(287512, 1305242049),
(125134, 1299310950),
(714619, 1311658393),
(777858, 1312508020),
(812091, 1312918459),
(979515, 1319524143),
(1009713, 1321038952),
(395950, 1307314421),
(552213, 1309435427),
(549979, 1309395329),
(919872, 1316468483),
(385920, 1307196494),
(825096, 1313085971),
(967657, 1318961937),
(136631, 1299825660),
(838405, 1313315222),
(984647, 1319803409),
(239280, 1303860435),
(917747, 1316368790),
(621945, 1310480971),
(1078781, 1324529892),
(897934, 1315556339),
(311070, 1305899412),
(830274, 1313157183),
(518156, 1308952471),
(524182, 1309037939),
(524142, 1309037521);

【问题讨论】:

    标签: mysql


    【解决方案1】:
    SELECT DATE_FORMAT(FROM_UNIXTIME(regdate), '%Y-%m') AS month, 
           COUNT(*) AS registrations 
    FROM users 
    GROUP BY month
    

    【讨论】:

    • 这会产生一堆垃圾数据,其中大多数注册在 NULL 月份,其余在 2013 年。
    • 那么请发布准确的表结构和示例数据。
    • 您的 regdate 是 int,而不是时间戳(mysql 的意思),我将编辑我的答案以反映这一点。
    猜你喜欢
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 2021-05-14
    相关资源
    最近更新 更多