当前位置: 首页 > 面试题库 >

MySql单表,选择过去7天并包含空行

闾丘坚诚
2023-03-14
问题内容

我在这里在stackoverflow上搜索了类似的问题,但是我不明白如何使这项工作,我想做的事情…

因此,我想从数据库中获取最近7天的交易记录,并获取总销售额,并且如果某天没有数据,还包括空行。

到目前为止,我所拥有的:http :
//sqlfiddle.com/#!2/f4eda/6

输出:

| PURCHASE_DATE | AMOUNT |
|---------------|--------|
|    2014-04-25 |     19 |
|    2014-04-24 |     38 |
|    2014-04-22 |     19 |
|    2014-04-19 |     19 |

我想要的是:

| PURCHASE_DATE | AMOUNT |
|---------------|--------|
|    2014-04-25 |     19 |
|    2014-04-24 |     38 |
|    2014-04-23 |      0 |
|    2014-04-22 |     19 |
|    2014-04-21 |      0 |
|    2014-04-20 |      0 |
|    2014-04-19 |     19 |

任何帮助表示赞赏:)


问题答案:

只需将子查询与所需日期和使用日期放在一起left outer join

select d.thedate, coalesce(SUM(amount), 0) AS amount
from (select date('2014-04-25') as thedate union all
      select date('2014-04-24') union all
      select date('2014-04-23') union all
      select date('2014-04-22') union all
      select date('2014-04-21') union all
      select date('2014-04-20') union all
      select date('2014-04-19')
     ) d left outer join
     transactions t
     on t.purchase_date = d.thedate and vendor_id = 0
GROUP BY d.thedate
ORDER BY d.thedate DESC;


 类似资料:
  • 如何从价格所在的表中进行选择 有没有办法动态格式化它,以删除空间并保持结果输出为原始?

  • 我们使用以下内容来选择“经验信息”包含“582”的所有节点: 这将选择“Kategorien”包含“Restaurant”的所有节点: 我们如何将这两个语句组合成一个语句,以便只选择ExperienceInfo包含582且Kategorien包含Restaurant的节点? 非常感谢您的帮助!

  • 问题内容: 我正在使用PHPMyadmin,并使用PHP将值放入数据库中。我使用时间戳存储产品的到期日期,如下所示,例如: 我要选择所有到期日期等于今天的日期加上8天的日期(例如上面的那一天) 我也想在一个单独的页面中选择所有过期日期等于今天日期+ 2周的内容,如果有人可以帮助我,将不胜感激! 问题答案: 您可以使用以下查询来做到这一点: 您可以使用过去的日期。

  • 本文向大家介绍MySQL LIMIT选择单行,包括了MySQL LIMIT选择单行的使用技巧和注意事项,需要的朋友参考一下 要在MySQL中选择一行,可以使用LIMIT。首先,让我们创建一个表。创建表的查询如下- 使用insert命令在表中插入一些记录。查询如下- 使用select语句显示表中的所有记录。查询如下- 以下是输出- 这是使用LIMIT从表中选择一行的查询- 以下是输出-

  • 问题内容: 如何显示和计算日期为昨天的值?我曾经在数据库中插入日期。例: 我想显示表中存在多少个具有多个URL的URL,以及昨天有多少个URL被访问过。结果示例: 我已经有了获取昨天日期的想法,但是我没有一个想法来计算昨天存在一个URL的次数和计算表中存在URL的次数。 问题答案: 获取昨天日期的最简单最佳方法是: 您的查询将是: 出于好奇,为您提供满足条件的行 数 的原因(否则将需要繁琐且冗长的

  • 问题内容: MySQL Explain plan中的含义是什么? 注意:为便于阅读,已编辑输出。 问题答案: 这意味着您执行的查询只不过计算表中的行数而已,该表是MyISAM表。MyISAM表是用单独的行数存储的,因此,执行此查询MySQL根本不需要查看任何表行数据。而是立即返回预先计算的行数。因此,对表的访问被“优化了”,查询速度很快。 在MySQL中的其他存储引擎(例如InnoDB)上不会发生