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

如何让GROUP BY和COUNT包含零和?

姜烨伟
2023-03-14
问题内容

我有这样的SQL($ytoday5天前在哪里):

$sql = 'SELECT Count(*), created_at FROM People WHERE created_at >= "'. $ytoday .'" AND GROUP BY DATE(created_at)';

我希望它每天返回一个值,因此在这种情况下(5天前到今天)它将返回5个结果。

但是,如果说Count(*)昨天是0,则不会返回该日期的所有数据,而是返回零。

如何更改该SQLite查询,使其还返回计数为0的数据?


问题答案:

如果不进行复杂的查询(我认为),您的输出数据集将不包含输入数据集中不存在的日期。这意味着您需要一个5天的数据集才能加入。

简单的版本是用5个日期创建一个表,然后加入该表。我通常会创建并保留 (有效地缓存) 日历表以及我可能需要的每个日期。
(例如从1900-01-01到2099-12-31。)

SELECT
  calendar.calendar_date,
  Count(People.created_at)
FROM
  Calendar
LEFT JOIN
  People
    ON Calendar.calendar_date = People.created_at
WHERE
  Calendar.calendar_date >= '2012-05-01'
GROUP BY
  Calendar.calendar_date


 类似资料:
  • 问题内容: 我有一个这样的数据框说 和会话和收入的每个值代表了一种类型的,我要统计每个种类的数量表示的数量和的为1。 在无法输出所需结果后,我发现简单的调用函数。 我怎样才能做到这一点? 问题答案: 您似乎想一次按几列分组: 应该给你你想要的

  • 问题内容: 1> 套装2排 2> 套装2排 3> 一组1行 为什么查询方式1>和2>会得到相同的结果?count(*)和count(somefiled)之间没有什么区别? 另外,查询2>和3>导致的结果不同,为什么 groupby 如此神奇?它是如何工作的? 更新:我正在使用MySQL5.1。:) 问题答案: 选择会给您一个结果集。如果按字段分组选择,则结果集的行将按该字段分组,并且结果集的每一行

  • 我需要将以下查询转换为hibernate条件查询。请帮忙 由于投票表上的复合主键,我用@Embeddable分隔了主键,所以后面的createQuery不起作用 和可嵌入对象 请建议一个更好的方法。

  • 问题内容: MSDN文档指出: COUNT(*)返回组中的项目数。这包括NULL值和重复项。 您如何在一个组中有一个空值?谁能解释他们要提出的观点? 问题答案: 如果你有这张桌子 表格1: 然后 输出为:

  • 问题内容: 我目前有一个数据框,其中包含以1和0作为值的列,我想遍历这些列并删除仅由0组成的列。到目前为止,这是我尝试过的: 在哪几年是我正在分析的不同年份的数据帧的列表,其中包括其中包含一个的列,而零则是包含所有零的列的列表。是否有更好的方法根据条件删除列?由于某些原因,我必须检查一列是否也位于零列表中,并将它们从零列表中删除,以获得所有零列的列表。 问题答案: df.loc[:, (df !=

  • 问题内容: 使用表i以及date_entered和code字段,我编写了一个查询以列出代码=‘12A’的每一年的计数。 这将产生: 我想在结果集中包括Cnt变量的总和。我知道如何使用单独的查询来找到总和,但是我想在原始查询中计算总和。 问题答案: 在该子句之后添加到查询中,您将获得一个额外的行,其中包含您的最终总数的NULL年。