【问题标题】:Combine found results and not found results合并找到的结果和未找到的结果
【发布时间】:2016-04-07 09:57:50
【问题描述】:

我有一个表,其中包含有关日志的信息,以了解网站页面上的点击量。

这是向我展示上述内容的查询:

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,因为图表必须从最近的日期开始。

注意:在上表中,contact2016-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)

我已尝试将INNOT IN 与上述查询结合使用,但我无法使其正常工作。

【问题讨论】:

标签: mysql sql database mariadb


【解决方案1】:

我不确定 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

【讨论】:

    【解决方案2】:

    创建一个包含天数(或整数)的表,并从它对您的查询执行 LEFT JOIN

    SELECT ...
        FROM AllDays a
        LEFT JOIN ( your query ) b ON b.date = a.date
        WHERE a.date BETWEEN ...;
    

    使用 MariaDB“序列表”会更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 2018-04-23
      • 1970-01-01
      • 2014-09-21
      • 2016-12-03
      相关资源
      最近更新 更多