有没有一种方法可以同时使用 DISTINCT 和 COUNT(*) 来防止您的代码出现重复条目?
Is there a way to use DISTINCT and COUNT(*) together to bulletproof your code against DUPLICATE entries?
昨天我得到了一个函数的帮助,可以根据多个 criteria/columns 正确获取列中多个项目的计数。但是,如果有一种方法可以根据聚合的 GROUP BY 语句获取 table 中所有条目的 DISTINCT 计数。
SELECT TIME = ap.day,
acms.tenantId,
acms.CallingService,
policyList = ltrim(sp.value),
policyInstanceList = ltrim(dp.value),
COUNT(*) AS DISTINCTCount
FROM dbo.acms_data acms
CROSS APPLY string_split(acms.policyList, ',') sp
CROSS APPLY string_split(acms.policyInstanceList, ',') dp
CROSS APPLY (select day = convert(date, acms.[Time])) ap
GROUP BY ap.day, acms.tenantId, sp.value, dp.value, acms.CallingService
我只想知道是否有办法查看是否有将 DISTINCT 和 Count(*) 一起使用的解决方法,以及它是否会影响我的结果,使该算法可能无法复制条目。
我必须使用 COUNT(*) 的原因是因为我基于 table 中的每一列进行聚合,而不仅仅是特定的一列或多列。
我们可以像这个例子一样使用 DISTINCT 和 COUNT。
USE AdventureWorks2012
GO
-- This query shows 290 JobTitle
SELECT COUNT(JobTitle) Total_JobTitle
FROM [HumanResources].[Employee]
GO
-- This query shows only 67 JobTitle
SELECT COUNT( DISTINCT JobTitle) Total_Distinct_JobTitle
FROM [HumanResources].[Employee]
GO
昨天我得到了一个函数的帮助,可以根据多个 criteria/columns 正确获取列中多个项目的计数。但是,如果有一种方法可以根据聚合的 GROUP BY 语句获取 table 中所有条目的 DISTINCT 计数。
SELECT TIME = ap.day,
acms.tenantId,
acms.CallingService,
policyList = ltrim(sp.value),
policyInstanceList = ltrim(dp.value),
COUNT(*) AS DISTINCTCount
FROM dbo.acms_data acms
CROSS APPLY string_split(acms.policyList, ',') sp
CROSS APPLY string_split(acms.policyInstanceList, ',') dp
CROSS APPLY (select day = convert(date, acms.[Time])) ap
GROUP BY ap.day, acms.tenantId, sp.value, dp.value, acms.CallingService
我只想知道是否有办法查看是否有将 DISTINCT 和 Count(*) 一起使用的解决方法,以及它是否会影响我的结果,使该算法可能无法复制条目。
我必须使用 COUNT(*) 的原因是因为我基于 table 中的每一列进行聚合,而不仅仅是特定的一列或多列。
我们可以像这个例子一样使用 DISTINCT 和 COUNT。
USE AdventureWorks2012
GO
-- This query shows 290 JobTitle
SELECT COUNT(JobTitle) Total_JobTitle
FROM [HumanResources].[Employee]
GO
-- This query shows only 67 JobTitle
SELECT COUNT( DISTINCT JobTitle) Total_Distinct_JobTitle
FROM [HumanResources].[Employee]
GO