嗨,我有很多数据,我需要知道每个值有多少,频率仅与唯一值相对应的频率。我使用了一个countif来计算唯一值,但我想知道它出现的次数。
很抱歉,如果这没有任何意义,请使用以下屏幕截图,以帮助您更好地理解。
答案 0 :(得分:0)
将B1中的公式更改为
ContractEnd
并填写以匹配A列中的值。
将B列复制到E列,然后进行“排序并删除重复项”¹。
这将F1中的公式简化为
CREATE TABLE #CalTable([ID] VARCHAR(8) NOT NULL)
DECLARE @num int
SET @num = 20170101
WHILE (@num <= 20181231)
BEGIN
INSERT INTO #CalTable([ID])
SELECT @num AS [ID]
SET @num = @num + 1
END
SELECT X.[Name], X.[TIMEID]
FROM (
-- All day availables
SELECT DISTINCT A.[Name],B.[ID] AS [TIMEID]
FROM #People A INNER JOIN #CalTable B
ON B.[ID] BETWEEN A.[ContractStart] AND A.[ContractEnd]
) X
LEFT JOIN (
-- Working day
SELECT DISTINCT A.[Name],B.[ID] AS [TIMEID]
FROM #People A INNER JOIN #CalTable B
ON B.[ID] BETWEEN A.[ContractStart] AND A.[ContractEnd]
INNER JOIN #Shifts C ON A.[Name]=C.[Name] AND B.[ID] BETWEEN C.[ShiftStart] AND C.[ShiftEnd]
) Z
ON X.[Name]=Z.[Name] AND X.[TIMEID]=Z.[TIMEID]
WHERE Z.[Name] IS NULL
ORDER BY X.[Name],X.[TIMEID]
向下填充以匹配E列中的值。
¹ E列的自定义数字格式为=IF(COUNTIF(A$1:A1, A1)=1, COUNTIF(A:A, A1), TEXT(,))
。