这是我的原始查询:
SELECT
CAST(IndexedDate as varchar),
COUNT(*) AS Logins
FROM
Table
WHERE
EventType = 'Login'
AND IndexedDate > DATEADD(mm, -1, GETDATE())
GROUP BY
IndexedDate
ORDER BY
IndexedDate DESC
这将留下空白,例如:
2016-09-13 41 2016-09-12 31 2016-09-09 15 2016-09-08 36
基于这个问题,我尝试了以下方法,但仍然存在差距,但最重要的是,结果是错误的(数字高出很多):
SELECT
CAST(IndexedDate as varchar),
SUM(Case When COUNT(*) Is Null Then 0 Else COUNT(*) End) AS Logins
FROM
...
我怎样才能使结果看起来像这样?
2016-09-13 41 2016-09-12 31 2016-09-11 0 2016-09-10 0 2016-09-09 15 2016-09-08 36
我已经检查了其他几个问题,但它们都涉及联接或我的场景中未涉及的其他因素。
更新
根据评论,我尝试了OUTER JOIN
。此迭代最终成功运行,但结果有些倒退…
SELECT
CAST(a.IndexedDate as varchar) as dt,
COUNT(*) AS Logins
FROM
(
SELECT *
FROM Table
WHERE IndexedDate > DATEADD(mm, -1, GETDATE())
AND EventType = 'Login'
) a
FULL OUTER JOIN (
SELECT DISTINCT(IndexedDate)
FROM Table
WHERE IndexedDate > DATEADD(mm, -1, GETDATE())
) b
ON
a.IndexedDate = b.IndexedDate
GROUP BY
b.IndexedDate
ORDER BY
b.IndexedDate DESC
结果:
2016-09-13 41 2016-09-12 31 (null) 1 (null) 1 2016-09-09 15 2016-09-08 36
我确认汇总中b
包括缺少的日期。
因此,我将汇总内容从编辑内容切换到我的原始帖子,现在可以正常工作了:
询问
SELECT
CAST(a.IndexedDate as varchar) as dt,
COUNT(EventType) AS Logins
FROM
(
SELECT DISTINCT(IndexedDate)
FROM Table
WHERE IndexedDate > DATEADD(mm, -1, GETDATE())
) a
FULL OUTER JOIN (
SELECT *
FROM Table
WHERE IndexedDate > DATEADD(mm, -1, GETDATE())
AND EventType = 'Login'
) b
ON
a.IndexedDate = b.IndexedDate
GROUP BY
a.IndexedDate
ORDER BY
a.IndexedDate DESC
结果
2016-09-13 41 2016-09-12 31 2016-09-11 0 2016-09-10 0 2016-09-09 15 2016-09-08 36
请注意,我必须替换为COUNT(*)
,COUNT(EventType)
这样它才不会从合计中计算得出1的日期。
我有一个RecolyerView,当activity启动时,它工作得很好。当我从那个activity去另一个再回来时,recyclerView是空的。它什么也不显示,但有时它返回值,但布局受到干扰,即项目之间有空隙,或布局将有一个很大的空隙,从activity顶部。 类的代码是: 这是activity首先启动时的影像 在此输入图像说明 这是恢复activity时的形象 在此输入图像说明 日志如下所
问题内容: 我试图获取通过终端机(Mac)设置的环境变量的值,同时还在.bash_profile文件中设置该变量并重新加载。这样做之后,我回显了该值,并在终端上打印了正确的值。尝试检索变量的值时(我确保在.bash_profile文件中以及在使用时都使用了正确的名称。 在下面的代码中,我用 VAR_NAME 替换了变量的名称: 在我的.bash_profile中: 当我打印出的值时,将打印“ nu
我希望在数据库中找不到该项时出现异常
我正在使用JdbcTemplate。query(sql、args、rowMapper)方法调用以返回对象列表。在某些情况下,我希望跳过一行,而不将其添加到返回的列表中。在这些情况下,我想到了两种解决方案: 让行映射器返回null 让RowMapper抛出一个异常(我知道SQLExceptions已被处理,所以这是一种可能性) 我的问题是:当返回null时,JdbcTemboard是否将其添加到列表
根据JSON规范,表示null值的正确方法是文字。 预期结果: 实际结果:
问题内容: 我有一个这样的数据框说 和会话和收入的每个值代表了一种类型的,我要统计每个种类的数量表示的数量和的为1。 在无法输出所需结果后,我发现简单的调用函数。 我怎样才能做到这一点? 问题答案: 您似乎想一次按几列分组: 应该给你你想要的