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

如果group by不返回任何值,则显示零

邵星光
2023-03-14
问题内容

我试图获得过去7天注册的用户数量以显示在图表上,如果mysql返回0而不是没有行,那将是很好的。目前,它只返回每天都有一行值的行

SELECT   date(created_at), 
         count(id) 
FROM     user_accts 
WHERE    date(created_at) < NOW() 
AND      date(created_at) > DATE_SUB(NOW(), INTERVAL 7 DAY) 
GROUP BY date(created_at);

问题答案:

尝试:

SELECT DATE_SUB(CURDATE(), INTERVAL i DAY) date_created_at, 
       count(id) 
FROM (SELECT 1 i UNION ALL 
      SELECT 2 UNION ALL 
      SELECT 3 UNION ALL 
      SELECT 4 UNION ALL 
      SELECT 5 UNION ALL 
      SELECT 6 UNION ALL 
      SELECT 7) i
LEFT JOIN user_accts ON  date(created_at) = DATE_SUB(CURDATE(), INTERVAL i DAY)
                   /*AND owner_id = '131'*/
GROUP BY DATE_SUB(CURDATE(), INTERVAL i DAY)


 类似资料:
  • 如果值为空,则需要在单元格中显示一个不间断的空格。这是我的模板: 我试过这个,但不管用: 它返回值的问题是: 如果许可证号带有值,则单元格为空,行颜色如下所示。 利用卢库马的建议,它表明了这一点: 更改筛选器中的if语句后,仍然不显示非值:

  • SQL架构: 我需要这样显示我的结果: 结果显示表SNMASTER的前5行 然后查看表事务,并在有OPERATION_ID时写入1

  • 问题内容: 我有以下选择语句,以获取流的下一个预定项目。如果没有匹配的行,我希望它返回默认值。这是我正在使用的行: 那应该可以获取最近计划的项目,但如果它早于查询之前30分钟,则不会。但是,如果用户未安排任何时间,则我需要一个默认值,以便流中实际播放某些内容。我尝试了以下方法: 和: 但是,如果未找到任何行,它将始终返回空结果。我该如何返回默认值? 问题答案: 一种方法 由于只返回一行,因此可以使

  • 我当前正在过滤一个流,但是如果过滤器没有返回任何匹配项,我想返回一个默认值。这是在附加流的链中,所以我使用它来避免在一个步骤没有任何结果时链停止。 目前,我正在通过将筛选结果收集到一个列表中来伪造它,如果列表为空,请创建新的默认列表并将其作为流返回。如果列表不为空,则将结果转换回流以将其传递回。 有什么更流的方式来实现这一点,而不需要去列表和返回流?

  • 问题内容: 我遇到了由于某种原因无法解决的问题。我正在尝试编写一个连接两个表的查询,其中在一个表中可能找不到匹配项。如: 如果中没有匹配项,则不返回任何内容。但是,如果没有匹配项,我仍然需要为该列返回NULL,并且仍从返回值。 我已经改变了所有我能想到的,但无济于事。 可以包含多个其他值,因此无法进行某种交易。 因此,如果没有匹配,我仍然需要它返回: 有什么建议? 问题答案: 将for的条件移出子

  • 问题内容: 我的“设备”表中有以下数据 我执行以下查询 返回下面给出的结果 如何得出这一点,以便它应该忽略NULL并且结果应该是 问题答案: 通过将其包装在空字符串中来转换值