我正在编写一个 MySQL 查询,输出每周创建的新用户数。
我的用户表是:
id | created_at
我的查询:
SELECT YEAR(created_at) AS Year, DATE_FORMAT(created_at, '%b %e') AS Week, COUNT(*) AS total
FROM users
GROUP BY Year, Week;
问题:
- 年份:我希望最近的年份位于顶部,目前最早的年份位于输出的顶部。
- 周:周列不根据日历排序。例如,最后的记录显示:
2019 | 5 月 9 日 | 100
我希望在哪里对年份和星期进行排序。
最佳答案
我想您会发现函数 YEARWEEK()
很有帮助,不仅对于分组,而且对于排序也很有帮助。
此外,您对 DATE_FORMAT()
的使用看起来不正确,因为您输出的是 %e
,这是该月的某一天,但您按周分组?
SELECT DATE_FORMAT(created_at, '%Y %b %v') AS date, COUNT(*) AS total
FROM users
GROUP BY YEARWEEK(created_at)
ORDER BY YEARWEEK(created_at) DESC;
关于mysql - 查询每周新用户数量 - 如何按年/周排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57048318/