我有一个表,其中包含有关日志的信息,以了解网站页面上的点击次数。
这是向我显示上述内容的查询:
select pageview_page, DATE(pageview_date) as pageview_date, count(*) as view_count
from pageviews
group by pageviews.pageview_page, DAY(pageviews.pageview_date)
order by pageviews.pageview_date desc
结果如下:
Page Day view_count
index 2016-01-12 50
index 2016-01-11 10
index 2016-01-10 20
contact 2016-01-12 5
contact 2016-01-11 5
PD:在日期上使用 desc
,因为图表必须从最新日期开始。
注意:在上表中,联系人
在2016-01-10
当天不存在,这意味着没有人使用过该页面那天。
如果该日期没有任何内容,我想让查询显示 0
,我该如何实现?结果必须如下所示
Page Day view_count
index 2016-01-12 50
index 2016-01-11 10
index 2016-01-10 20
contact 2016-01-12 5
contact 2016-01-11 5
contact 2016-01-10 0 <-------- (I want this to appear, as it is missing in the table above, in the first table)
以接下来的 3 个日期为例:2016-01-10、2016-01-11、2016-01-12
重点是按天查看统计数据,我使用 next 来获取上面的日期:
select DATE(pageview_date) as pageview_date from pageviews GROUP by DAY(pageview_date)
我已经尝试将 IN
和 NOT IN
与上面的查询结合使用,但我无法让它工作。
最佳答案
我不确定 MySQL 中的 DAY
函数,但通过查看你的第一个查询,我认为你可以做这样的事情 -
select T2.pageview_page AS pageview_page,
T1.pageview_date AS pageview_date,
(select count(*)
from pageviews t3
where t3.pageview = t2.pageview
and DAY(t3.pageview_date) = t1.pageview_date) as view_count
from (select distinct DAY(pageview_date) pageview_date FROM pageviews) t1,
(SELECT DISTINCT pageview_page FROM pageviews) t2
group by pageview_page, pageview_date
order by pageview_date desc
关于mysql - 合并找到的结果和未找到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36472695/