我有一些我想要检索的数据,但我希望按特定的秒数对其进行分组。例如,如果我的表格如下:
| id | user | pass | created |
created
列为INT并保存时间戳(1970年的秒数)。
我想要在上个月和当前日期之间创建的用户数量,但是显示它们按照7*24*3600
(一周)分组。因此,如果在该范围内有1000个新用户,请让他们显示每周注册的数量(第一周100个,第二个450个,第三个50个,第4周400个 - 这样的事情)。
我尝试按created / 7*24*3600
对结果进行分组,但这不起作用。
我的查询应该如何?
答案 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