0

我想根据日期范围内的每日级别计算所有点击次数。

假设我想计算“2013-05-01”-“2013-05-30”之间的所有点击次数,并希望以下结果如下所示:

date            clicks
2013-05-01      50
2013-05-02      60
2013-05-03      65
2013-05-04      0
etc...

目前我有以下 SQL 调用

SELECT count(date) as clicks, date FROM views WHERE uid = $id group by date ORDER BY date DESC

这工作正常,唯一的问题是,我没有得到日期范围内的所有天数,而只有有点击的天数。我应该能够得到所有的日子,还有点击次数为 0 的日子。

希望有人可以帮助

4

5 回答 5

3

由于您只在有点击的日子里得到结果,所以在没有点击的日子里您不会得到任何结果。你需要要么

A) 生成日期列表并返回每天的点击次数。类似于SQL Server:即使某些天不存在数据,如何选择日期范围内的所有天

B) 不要将结果行用于输出,而是在 PHP 中枚举每一天,如果在 SQL 结果集中找不到这一天,则在输出中插入一个 0 条目。您可以使用date_add一次将一天添加到期间开始DateTime,并将其格式化为带有日期的字符串,根据结果的日期检查它。

于 2013-05-14T09:51:40.630 回答
0

尝试使用BETWEEN子句...

SELECT * FROM table_name WHERE column_name BETWEEN start_date AND end_date
于 2013-05-14T09:47:38.450 回答
0

尝试这样,因为现在您正在获取日期范围内的值。

SELECT count(date) as clicks, date FROM views 
WHERE uid = $id AND date BETWEEN $from_dt AND $to_dt 
group by date ORDER BY date DESC;

此外,仅当您的表在特定日期有任何记录时,此查询才会返回计数。

于 2013-05-14T09:48:52.350 回答
0
SELECT count(date) as clicks, date 
FROM views 
WHERE uid = $id
  AND date between 'date1' and 'date2'
group by DAY(date)
ORDER BY date DESC
于 2013-05-14T09:50:25.510 回答
0

尝试这个:

select sum(clicks) as total_clicks,date from views where uid='$id' AND (date BETWEEN $from_dt AND $to_dt) group by date order by date desc
于 2013-05-14T09:56:15.513 回答