如何使用 sql 查询获取过去四周(包括本周)


How do I get the last four weeks including current week using an sql query

我想获取过去 4 周的结果,包括本周。 所以假设我有一个统计表,里面装满了上个月 4 月的统计数据,现在是 5 月 4 日...... 当我写这个查询时:我想吸引唯一身份访问者:

 SELECT COUNT(distinct ip ) AS uni, (
date_added
) AS wday, FROM_UNIXTIME( date_added ) AS cusotms
FROM  `site_stats` 
WHERE FROM_UNIXTIME( date_added ) >= DATE_SUB( SYSDATE( ) , INTERVAL 4 WEEK ) 
GROUP BY WEEK( FROM_UNIXTIME( date_added ) ) 

它发现了以下结果:

uni     wday        cusotms
2   1333819740  2012-04-07 22:29:00
6   1333906140  2012-04-08 22:29:00
7   1334510940  2012-04-15 22:29:00
7   1335115740  2012-04-22 22:29:00
5   1336089600  2012-05-04 05:00:00

但我想要过去 4 周,包括本周。我不知道为什么这给我显示5月4日,4月22日,4月15日以及4月8日和7日的记录。我在想下面这样的事情

这是过去 4 周按周分组的正确结果吗?我在想应该是5月4日,

4 may
4-7 = 28 april
4-14days = 21 april
and then 14 april
and last 7 april
??

我需要将此输出放在图表中以显示上周的统计数据......任何帮助将不胜感激。

提前感谢!

这是解决方案:

SELECT COUNT( DISTINCT ip ) AS uni, ( 
    date_added
    ) AS wday, FROM_UNIXTIME( date_added ) AS cusotms
    FROM `site_stats` 
    WHERE FROM_UNIXTIME( date_added ) >= CURDATE( ) - INTERVAL DAYOFWEEK( CURDATE( ) ) -3WEEK
    GROUP BY WEEK( FROM_UNIXTIME( date_added ) ) 
    LIMIT 0 , 30

希望对:)有所帮助

您获取确切的日期,似乎要获取一周:

SELECT COUNT(distinct ip ) AS uni, (
date_added
) AS wday, WEEK( FROM_UNIXTIME( date_added ) ) AS cusotms