mysql - 从表格宽度日期字段获取每周分数

标签 mysql sql

我有这张表:

    -------------------------------------------
    |id      |duration  |date           |uid  |
    -------------------------------------------
    |1       |20        |1392479414     |1    |
    |2       |60        |1392561057     |1    |
    |3       |50        |1392598128     |2    |
    |...                                      |
    |...                                      |
    -------------------------------------------

有没有一种简单的方法可以从中获得每周的累积分数,而无需手动计算周的开始/结束日期,并查询每个日期以获取这些日期之间的分数?

所以我得到:

    ---------------
    |sum_duration |
    ---------------
    |2450         |
    |12350        |
    |400          |
    |...          |
    |...          |
    ---------------

非常感谢。

最佳答案

是的。 GROUP BY 周数。

获取所有结果

SELECT SUM(`duration`) AS sum_duration, DATE_FORMAT(FROM_UNIXTIME(`date`), '%U') as week_no
FROM `foo`
GROUP BY DATE_FORMAT(FROM_UNIXTIME(`date`), '%U')

根据您的数据集,我们会得到;

+--------------+---------+
| sum_duration | week_no |
+--------------+---------+
|           20 | 06      |
|          110 | 07      |
+--------------+---------+
2 rows in set

获取某周

如果您想获得特定的一周,只需将 HAVING week_no = '07' 附加到末尾即可。 (将 07 替换为您的周数。例如;

SELECT
    SUM(`duration`) AS sum_duration,
    DATE_FORMAT(FROM_UNIXTIME(`date`), '%U') AS week_no
FROM
    `foo`
GROUP BY
    DATE_FORMAT(FROM_UNIXTIME(`date`), '%U')
HAVING
    week_no = '07';

我们会得到如下结果;

+--------------+---------+
| sum_duration | week_no |
+--------------+---------+
|          110 | 07      |
+--------------+---------+
1 row in set

关于mysql - 从表格宽度日期字段获取每周分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27193523/

相关文章:

python - 使用 SELECT 语句的 MySQL ProgrammingError 1064

java - 如何将多个sql列的内容合并到一个新行中?

mysql - SQL:按foreign_key数字列表排序

mysql - 编写SQL时如何将 "*"替换为所有列

mysql - 如何检查用户在文本框中输入的用户名和密码是否与数据库中的记录匹配

带有 IF 语句的 Mysql SUM 函数

mysql - 基于数据分组的特定mysql更新

sql - 在 SQL 中查找租用每辆车的所有用户

php搜索接受不完整的输入

php - 无法连接到 Kohana 中的远程 MySql 服务器