Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从时间戳获取图表的数据_Mysql_Sql - Fatal编程技术网

Mysql 从时间戳获取图表的数据

Mysql 从时间戳获取图表的数据,mysql,sql,Mysql,Sql,我在几个表中有一堆数据。每行都有一个ts列,该列是数据类型时间戳,如下所示: week1 5 week2 16 week3 19 week4 27 2013-11-20 11:20:14 我想为一年中的每一周绘制一张图表。所以我想要的结果如下: week1 5 week2 16 week3 19 week4 27 比如说。有可能用SQL实现这一点吗?我的意思是我可以用PHP脚本手动执行,但我觉得必须有一种方法可以使用SQL中的COUNT()函数来执行此操作。您可以使用week函数来获取周数:

我在几个表中有一堆数据。每行都有一个
ts
列,该列是数据类型时间戳,如下所示:

week1 5
week2 16
week3 19
week4 27
2013-11-20 11:20:14

我想为一年中的每一周绘制一张图表。所以我想要的结果如下:

week1 5
week2 16
week3 19
week4 27

比如说。有可能用SQL实现这一点吗?我的意思是我可以用PHP脚本手动执行,但我觉得必须有一种方法可以使用SQL中的COUNT()函数来执行此操作。

您可以使用
week
函数来获取周数:

select week(ts),
    count(*)
from your_table
group by week(ts);
或者像201719一样使用
yearweek

select yearweek(ts),
    count(*)
from your_table
group by yearweek(ts);

您可以使用
week
函数获取周数:

select week(ts),
    count(*)
from your_table
group by week(ts);
或者像201719一样使用
yearweek

select yearweek(ts),
    count(*)
from your_table
group by yearweek(ts);

不太了解表结构的细节。我认为你可以做到这一点:

SELECT
    WEEK(timestamp),
    COUNT(*) as nbr
FROM
    table
GROUP BY 
    WEEK(timestamp)
但是我认为在计算中也考虑一年是很好的。像这样:

SELECT
    YEAR(timestamp),
    WEEK(timestamp),
    COUNT(*) as nbr
FROM
    table
GROUP BY 
    YEAR(timestamp),
    WEEK(timestamp)
SELECT
    yearweek(timestamp),
    COUNT(*) as nbr
FROM
    table
GROUP BY 
    yearweek(timestamp)
我还认为可以在php代码中添加“week”部分

编辑

Juergen d在评论中说的是真的。您还可以使用yearweek()。像这样:

SELECT
    YEAR(timestamp),
    WEEK(timestamp),
    COUNT(*) as nbr
FROM
    table
GROUP BY 
    YEAR(timestamp),
    WEEK(timestamp)
SELECT
    yearweek(timestamp),
    COUNT(*) as nbr
FROM
    table
GROUP BY 
    yearweek(timestamp)
参考资料:


而不太了解表结构的细节。我认为你可以做到这一点:

SELECT
    WEEK(timestamp),
    COUNT(*) as nbr
FROM
    table
GROUP BY 
    WEEK(timestamp)
但是我认为在计算中也考虑一年是很好的。像这样:

SELECT
    YEAR(timestamp),
    WEEK(timestamp),
    COUNT(*) as nbr
FROM
    table
GROUP BY 
    YEAR(timestamp),
    WEEK(timestamp)
SELECT
    yearweek(timestamp),
    COUNT(*) as nbr
FROM
    table
GROUP BY 
    yearweek(timestamp)
我还认为可以在php代码中添加“week”部分

编辑

Juergen d在评论中说的是真的。您还可以使用yearweek()。像这样:

SELECT
    YEAR(timestamp),
    WEEK(timestamp),
    COUNT(*) as nbr
FROM
    table
GROUP BY 
    YEAR(timestamp),
    WEEK(timestamp)
SELECT
    yearweek(timestamp),
    COUNT(*) as nbr
FROM
    table
GROUP BY 
    yearweek(timestamp)
参考资料:


您可以在mysql中使用WEEK函数

例:

Select WEEK(),count(*)按周从表组中选择()

您可以在mysql中使用WEEK函数

例:

Select WEEK(),count(*)按周从表组中选择()

hi看一看hi看一看哇,我从没听说过这些功能!我知道一定有个简单的方法。非常感谢。我没有投你反对票,但出于某种原因,我得到的数据(计数列)没有增加:
/201346 59//201347 44//201348 21//201349 15//201350 10
我不明白你说的“增加”是什么意思?对不起。我意识到COUNT()只计算那一周的条目。我需要它包括截至该周的所有计数,因此每周是从开始到该周的总条目数。我希望这是有道理的:哦,我从来没有听说过这些函数!我知道一定有个简单的方法。非常感谢。我没有投你反对票,但出于某种原因,我得到的数据(计数列)没有增加:
/201346 59//201347 44//201348 21//201349 15//201350 10
我不明白你说的“增加”是什么意思?对不起。我意识到COUNT()只计算那一周的条目。我需要它包括截至该周的所有计数,因此每周是从开始到该周的总条目数。我希望这是有道理的:P