按期间分组结果

时间:2011-10-07 10:28:52

标签: mysql sql

我有一些我想要检索的数据,但我希望按特定的秒数对其进行分组。例如,如果我的表格如下:

| id | user | pass | created |

created列为INT并保存时间戳(1970年的秒数)。

我想要在上个月和当前日期之间创建的用户数量,但是显示它们按照7*24*3600(一周)分组。因此,如果在该范围内有1000个新用户,请让他们显示每周注册的数量(第一周100个,第二个450个,第三个50个,第4周400个 - 这样的事情)。

我尝试按created / 7*24*3600对结果进行分组,但这不起作用。

我的查询应该如何?

3 个答案:

答案 0 :(得分:2)

你必须保留该分区的整数部分。您可以使用floor()功能执行此操作。

您是否尝试过select floor(created/604800) as week_no, count(*) from users group by floor(created/604800)

我假设您已经整理了“上个月创建的选择用户”部分。

答案 1 :(得分:2)

您需要使用整数除div,否则结果将变为实数,并且任何一周都不会解析为相同的值。

SELECT 
  (created div (7*24*60*60)) as weeknumber
  , count(*) as NewUserCount
FROM users
WHERE weeknumber > 1
GROUP BY weeknumber

请参阅:http://dev.mysql.com/doc/refman/5.0/en/arithmetic-functions.html

答案 2 :(得分:1)

好的,您可以尝试以下选项:

GROUP BY DAY

select count(*), DATE_FORMAT(created_at,"%Y-%m-%d") as created_day FROM widgets GROUP BY created_day

按月分组

select count(*), DATE_FORMAT(created_at,"%Y-%m") as created_month FROM widgets GROUP BY created_month

GROUP BY YEAR

select count(*), DATE_FORMAT(created_at,"%Y") as created_year FROM widgets GROUP BY created_year