Q&A about the site for programming puzzle enthusiasts and code golfers
-- The best time to ask questions -- Look for the minimum value on y-scale: -- It says when the time between question and answer is minimal. -- For example DECLARE @Frequency int = ##Frequency:int?3## DECLARE @MaxTimeDiff int = ##MaxTimeDiff:int?1440## ;WITH tmp AS ( SELECT TOP 1000 timeDiff = DATEDIFF(minute, q.CreationDate, a.CreationDate), Period = CASE @Frequency WHEN 1 THEN DATEPART("hour", q.CreationDate) WHEN 2 THEN DATEPART("weekday", q.CreationDate) WHEN 3 THEN ROUND((CAST(DATEPART("weekday", q.CreationDate) AS numeric) + CAST(DATEPART("hour", q.CreationDate) AS numeric) / 24), 2) END FROM Posts q LEFT OUTER JOIN Posts a ON q.AcceptedAnswerId = a.Id WHERE q.AcceptedAnswerId > 0 ) SELECT Period, COUNT(timeDiff) AS [Number of questions], sum(case when timeDiff < 0 then 1 else null end) as [Negative timeDiff], AVG(timeDiff) AS [Mean], STDEV(timeDiff) AS [Standard deviation] FROM tmp -- We cut off answers that arrived more than n minutes -- after the question to avoid outliers WHERE timeDiff < @MaxTimeDiff GROUP BY Period ORDER BY Period