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

MySQL-填写缺少月份的行

慕佑运
2023-03-14
问题内容

天哪,它必须是如此简单,但我正在为“填写缺失的数据”问题而苦苦挣扎。

我有一个表,该表具有以下带有一些插入数据的列。

TABLE

year  month  payment
2014    3      100
2014    5      800
2014    9      200

我想要的这张表是从2014年起的全部月份的付款值。

Month    Payment
  1        0
  2        0
  3       100
  4        0
  5       800

  ...

  12       0

我尝试在select中使用IFNULL,但失败如此严重…而且stackoverflow的搜索结果通常会结合两个或多个表来处理信息。解决这个问题的最快,最好的解决方案是什么?


问题答案:

对于缺少的月份,您可以对所有月份进行联合查询,并与表联接

SELECT 
t1.`year`,
t.`month`,
coalesce(t1.payment,0) payment
FROM
(SELECT 1 AS `month`
UNION 
SELECT 2 AS `month`
UNION 
....
SELECT 12 AS `month`
) AS t
LEFT JOIN your_table t1 on(t.`month` = t1.`month`)
WHERE ....

Fiddle Demo



 类似资料:
  • 问题内容: 我有此数据表,我想知道是否有可能创建一个查询,以考虑 到当前月份的所有月份 按月累积的总和。 我需要这样的结果: 问题答案: 这与其他问题非常相似,但是最佳查询仍然很棘手。 基本查询 以快速获取运行总和: 棘手的部分是 填写缺少的月份 : 该隐含需要的Postgres 9.3+。从表中的第一个月开始。 要 开始一个特定的月份 : SQL提琴。 将不同年份的月份间隔数月。您并没有要求,但

  • 问题内容: 我有一个MySQL查询问题,该查询按工作日将表中的数据分组。 我需要它来填充数据中缺少的工作日,例如下面的SQL示例中的星期日(工作日7)。 SQL小提琴 MySQL 5.6模式设置 : 查询1 : 结果 : 我希望它也返回此行。 我的完整查询非常复杂,因此希望您能找到一个快速的解决方案。 问题答案: 正常方法是:

  • 问题内容: 这个问题已经在这里有了答案 : MySQL如何填充范围内的缺失日期? (5个答案) 2年前关闭。 我有这个查询,我想用一些值(例如零…)填充缺失的日期。 结果如下: 如何用零值填充缺失的日期?有人有主意吗? 我需要这些数据来进行 图表 预览。 问题答案: 通常,您可以使用以下方法在MySQL中生成一系列N个整数: 请注意,您联接的表(someTable)必须至少具有N行。 上面的-1是

  • 问题内容: 请注意,以下组的输出中缺少和月份。如果一个月没有数据,我想显示月份和。有人知道该怎么做吗? 样本数据: 仍然无法清除丢失的行,这是我在其中的位置。 问题答案: 如果您不希望超出结果的日期和日期,则可以执行以下操作:

  • 问题内容: 我有一个数据框架,如下所示 我想做的是在date列中找到最小和最大日期,并扩展该列使其具有所有日期,同时为该列填写。所以所需的输出是 问题答案: 初始数据框: 首先,将日期转换为日期时间: 然后,生成日期和唯一用户: 这将允许您创建一个MultiIndex: 您可以使用它来重新索引您的DataFrame: 然后可以按用户排序:

  • 我有日期值,很少日期是完整的(格式:yyyy-mm-dd,但作为文本,而不是日期格式),但很少日期有缺失的月和日值,现在我必须添加缺失的月和日。示例:如果缺少日,则必须将该月的第一天添加到日期中,如果缺少月和日,则必须将1月1日添加到年部分中,在sql中,我可以简单地将数字连接起来,如下所示: 现在类似的连接必须在POSTGRESQL中完成,我尝试使用CAST和to_char以及其他一些函数,但我