过去12个月,按周分组

Dan*_*ilo 21 group-by

我有一个表REGDATE列,一个注册日期(YYYY-MM-DD HH:MM:SS).我想展示一个直方图(ExtJS),以了解用户注册的年份.我想在过去的十二个月中就当前日期和按周分组日期这样做.

任何提示?

Tom*_*ken 28

在PostgreSQL中的FWIW,Karaszi有一个有效的答案,但有一个更快的查询:

SELECT date_trunc('week', REGDATE) AS "Week" , count(*) AS "No. of users"
FROM <<TABLE>>
WHERE REGDATE > now() - interval '12 months' 
GROUP BY 1
ORDER BY 1;
Run Code Online (Sandbox Code Playgroud)

我的基础是Ben Goodacre的工作


KAR*_*ván 22

在MySQL中:

SELECT COUNT(*), DATE_FORMAT(regdate, "%X%V") AS regweek FROM table GROUP BY regweek;
Run Code Online (Sandbox Code Playgroud)

要么

SELECT COUNT(*), YEARWEEK(NOW(), 2) as regweek FROM table GROUP BY regweek;
Run Code Online (Sandbox Code Playgroud)

在PostgreSQL中:

SELECT COUNT(*), EXTRACT(YEAR FROM regdate)::text ||  EXTRACT(WEEK FROM regdate)::text AS regweek FROM table GROUP BY regweek;
Run Code Online (Sandbox Code Playgroud)

  • 我尝试了PostgreSQL并得到了一个错误.不得不在EXTRACT(YEAR)之后添加:: varchar. (4认同)
  • 对于那些寻找PostgreSQL版本的人来说,下面的Tom Gerken的例子更好.它限制为12个月,零填充日期,并处理日期时间到文本转换. (2认同)