mysql - 选择计算时间范围内的多个字段 - MYSQL

标签 mysql sql

我在计算时间范围内的多个字段时遇到问题。 我有下表:

# date, count, fb_user_count, email_user_count, reg_dt
'2015-10-27', '11', '6', '5', '2015-11-02 13:59:14'
'2015-10-26', '3', '1', '2', '2015-11-02 13:59:10'

我想获得每周的注册数量,如下所示:

# date, count, fb_user_count, email_user_count, reg_dt
'2015-11-02', '31', '16', '15', '2015-11-02 13:59:14'
'2015-11-09', '12', '6', '6', '2015-11-09 13:59:14'

和每月:

# date, count, fb_user_count, email_user_count, reg_dt
'2015-11', '131', 'x', 'y', '2015-11-02 13:59:14' (the last value is not so important)
'2015-12', '112', 'x', 'y', '2015-12-09 13:59:14'

我尝试了不同的方法,但我很难完成这项任务。任何帮助都会很棒。谢谢!

最佳答案

您可以使用 MySQL Date and Time functions WEEK()MONTH()YEAR() 来构建您的查询:

SELECT
    MIN(date),
    SUM(count),
    SUM(fb_user_count),
    SUM(email_user_count)
FROM visit
GROUP BY WEEK(date, 1); -- First day is Monday

SELECT
    CONCAT(YEAR(date), '-', MONTH(date)),
    SUM(count),
    SUM(fb_user_count),
    SUM(email_user_count)
FROM visit
GROUP BY YEAR(date), MONTH(date);

关于mysql - 选择计算时间范围内的多个字段 - MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37621624/

相关文章:

java - 如何使用Where子句查询显示从jtextfield到jtable的搜索查询从mysql表

c# - 在 C# 中通过 SSH.NET 隧道连接到 MySQL 数据库时出现 "Unable to connect to any of the specified MySQL hosts"

sql - 更新Sqlite3列,关键匹配问题

sql - MySQL GROUP_CONCAT + IN() = 丢失数据 :-(

sql - Spring JPA 查询总是使用序列扫描而不是索引扫描

php - MySQL - 将 3 行变成 3 列

mysql - 如何在谷歌云sql实例数据库中创建触发器

php - 使用存储过程批量更新表

mysql - 查询具有多个值但在具有相同列的不同表中的多列

Laravel 中的 SQL 查询未返回正确的结果