如何从日期列中删除时间并在每个日期拥有唯一的用户数
how to strip the time from a date column and have a unique count of users per date
我遇到了一个事件 table,其中包含太多列。我想查询 3 个列,DateTimeResolved、Team 和 Individual。首先,我想放弃 DateTimeResolved 列中的时间,只留下一个日期。然后我想知道自 2017 年 4 月以来每个团队有多少人(唯一计数)解决了事件。
这可以做到吗?
我有以下查询,但它们显然需要调整,因为它们没有给我想要的最终结果。
select stat_datetimeresolved, resolvedbyteam, resolvedby
from [dbo].[Incident]
where Stat_DateTimeResolved is not null
and Stat_DateTimeResolved >= '2017-04-01 00:00:00'
order by Stat_DateTimeResolved asc
select CAST(stat_datetimeresolved as date),
COUNT(resolvedby)
from [dbo].[Incident]
group by CAST(Stat_DateTimeResolved as DATE)
order by CAST(stat_datetimeresolved as DATE) asc
您在此处的问题中有多个不兼容的请求。我想你追求的其实是:
自 2017 年 4 月以来,每个团队每天有多少人下定决心?
为此,您只需要 return 一个包含解决日期、个人所属团队以及实际做出解决方案的人的唯一列表,然后汇总:
with r as
(
select distinct cast(stat_datetimeresolved as date) as DateResolved
,ResolvedByTeam
,ResolvedBy
from [dbo].[Incident]
where Stat_DateTimeResolved >= '20170401' -- NULL check is redundant if you are filtering for a value
)
select DateResolved
,ResolvedByTeam
,count(ResolvedBy) as NumIndividualsMakingResolutions
from r
group by DateResolved
,ResolvedByTeam
order by DateResolved
,ResolvedByTeam;
你很亲密;您可以将 DISTINCT 关键字添加到 COUNT 以按天获取唯一团队成员的数量。
SELECT CAST(stat_datetimeresolved as date) as DateResolved
, ResolvedByTeam
, COUNT(DISTINCT resolvedby) as ResolvedByCnt
FROM [dbo].[Incident]
WHERE Stat_DateTimeResolved >= '20170401'
GROUP BY CAST(Stat_DateTimeResolved as DATE), ResolvedByTeam
ORDER BY CAST(stat_datetimeresolved as DATE) asc, ResolvedByTeam
我遇到了一个事件 table,其中包含太多列。我想查询 3 个列,DateTimeResolved、Team 和 Individual。首先,我想放弃 DateTimeResolved 列中的时间,只留下一个日期。然后我想知道自 2017 年 4 月以来每个团队有多少人(唯一计数)解决了事件。
这可以做到吗?
我有以下查询,但它们显然需要调整,因为它们没有给我想要的最终结果。
select stat_datetimeresolved, resolvedbyteam, resolvedby
from [dbo].[Incident]
where Stat_DateTimeResolved is not null
and Stat_DateTimeResolved >= '2017-04-01 00:00:00'
order by Stat_DateTimeResolved asc
select CAST(stat_datetimeresolved as date),
COUNT(resolvedby)
from [dbo].[Incident]
group by CAST(Stat_DateTimeResolved as DATE)
order by CAST(stat_datetimeresolved as DATE) asc
您在此处的问题中有多个不兼容的请求。我想你追求的其实是:
自 2017 年 4 月以来,每个团队每天有多少人下定决心?
为此,您只需要 return 一个包含解决日期、个人所属团队以及实际做出解决方案的人的唯一列表,然后汇总:
with r as
(
select distinct cast(stat_datetimeresolved as date) as DateResolved
,ResolvedByTeam
,ResolvedBy
from [dbo].[Incident]
where Stat_DateTimeResolved >= '20170401' -- NULL check is redundant if you are filtering for a value
)
select DateResolved
,ResolvedByTeam
,count(ResolvedBy) as NumIndividualsMakingResolutions
from r
group by DateResolved
,ResolvedByTeam
order by DateResolved
,ResolvedByTeam;
你很亲密;您可以将 DISTINCT 关键字添加到 COUNT 以按天获取唯一团队成员的数量。
SELECT CAST(stat_datetimeresolved as date) as DateResolved
, ResolvedByTeam
, COUNT(DISTINCT resolvedby) as ResolvedByCnt
FROM [dbo].[Incident]
WHERE Stat_DateTimeResolved >= '20170401'
GROUP BY CAST(Stat_DateTimeResolved as DATE), ResolvedByTeam
ORDER BY CAST(stat_datetimeresolved as DATE) asc, ResolvedByTeam