计算每周给出大量NULL的记录数

时间:2013-08-10 22:11:21

标签: php mysql date group-by

我尝试了大约10种不同的查询变体,类似于以下内容:

SELECT WEEKOFYEAR( dateline ) AS weekno, COUNT( 1 ) AS posts
FROM post
GROUP BY WEEKOFYEAR( dateline )
LIMIT 0 , 30

结果数据总是一些结果,大约600,000“NULL”,如下所示:

weekno  posts
NULL    591843
1   57
2   42
3   25
4   44
5   9
6   38
7   15
8   41
9   10
10  130
11  77
12  69
13  36
14  25
15  25
16  24
17  44
18  42
19  14
20  49
21  70
22  41
23  40
24  57
25  40
26  31

以下是dateline的表结构:

#   Name    Type    Collation   Attributes  Null    Default     Extra
7   dateline    int(10)         UNSIGNED    No  0   

所有行在日期行中都有一个值。

我需要逐周工作,因为最终我想在有和没有指定论坛部分的情况下绘制帖子活动。我不知道为什么我得到了所有这些NULL结果。

1 个答案:

答案 0 :(得分:1)

我认为您的日期以unixtime整数格式存储,假设它是unixtime尝试FROM_UNIXTIME函数

SELECT WEEKOFYEAR(FROM_UNIXTIME(dateline)) AS weekno, COUNT( 1 ) AS posts
FROM post
GROUP BY WEEKOFYEAR(FROM_UNIXTIME(dateline))
LIMIT 0 , 30

要从不同年份返回周,请尝试此

SELECT 
FROM_UNIXTIME(dateline, '%Y') Year,
WEEKOFYEAR(FROM_UNIXTIME(dateline)) AS weekno, COUNT( 1 ) AS posts
FROM post
GROUP BY FROM_UNIXTIME(dateline, '%Y'), WEEKOFYEAR(FROM_UNIXTIME(dateline))
LIMIT 0 , 30

DEMO HERE