mysql - 查询每周新用户数量 - 如何按年/周排序?

标签 mysql sql mariadb

我正在编写一个 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/

相关文章:

wordpress - 重新启动系统后,Mariadb会丢失数据

mysql - 从 mysqldump mysql 5.6 导入 mariadb 10.1 时出现随机语法错误

mysql - 创建 MYSQL 到 sqlite3 的 View

c# - 无法加载文件或程序集“MySql.Web”

mysql - 具有不是键的 auto_increment 字段的架构和表设计

MySQL SELECT table.column AS 表

mysql - 更新一个日期字段小于另一日期字段的字段

php - Codeigniter 使用不同的 ID 更新表中的每一行

SQL 存储过程 : Reordering rows after delete

mysql - 有什么理由不将独立于特定数据库的存储过程放在mysql的mysql数据库中?