## When to post to get more views

1

(click on this box to dismiss)

Q&A for professional and enthusiast programmers

``````/* GETTING MORE VIEWS

On the graph, look for the value on the x-axis that
corresponds to the maximum value on y-axis.
That's when questions get most views.

As for Dec 2013, questions get more views when posted
at 5am GMT.

Axes:
- X: Hours, days of week, or both
1.0 is Sunday, 12am GMT; 3.5 means Tuesday, 12pm GMT.
- Y: Views per question created at time X.

Parameters:
- All: Include all users or only one specified by UserId
Values: 0 - show stats for one user, 1 - for all users
- Frequency: The scale of X-axis
Values: 1 - hours, 2 - day of week, 3 - both
- UserId: Whose stats to include in calculations. Matters only when All = 0.
Values: Your user ID or someone else's.
- YearsBack: How many previous years take into account. There're interesting
changes in results as the number of years changes.
*/

DECLARE @All int = ##All:int?1##
DECLARE @Frequency int = ##Frequency:int?3##
DECLARE @UsedId int = ##UserId:int##
DECLARE @YearsBack int = ##YearsBack:int?1##

;WITH tmp AS
(
SELECT q.ViewCount,
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
WHERE q.OwnerUserId = CASE WHEN @All = 1 THEN q.OwnerUserId ELSE @UsedId END
AND q.CreationDate > DATEADD("year", -@YearsBack, CURRENT_TIMESTAMP)
AND q.PostTypeId = 1
)
SELECT Period, CAST(SUM(ViewCount) AS FLOAT)/CAST(COUNT(*) AS FLOAT) AS [Views per question]
FROM tmp
GROUP BY Period
ORDER BY Period``````

### Enter Parameters

Options:
-
Switch sites:
Hold tight while we fetch your results
:records returned in :time ms:cached