Anton.Sandbox

0

Please login or register to vote for this query.

(click on this box to dismiss)

Ask Ubuntu

Q&A for Ubuntu users and developers

-- When do we add most posts, both questions and answers?
-- UTC (GMT) time zone. The week starts with Sunday.
-- X: Hours, days of week, or both (3.5 means Tuesday, 12pm GMT)
-- Y: Number of plots
-- Parameters:
--   HourOrDOW (1 - hours, 2 - day of week, 3 - both)
--   All (0 - show stats for one user, 1 - for all users)
--   UserId (yours or the other's one; matters only when All = 0)

DECLARE @Choice int = ##HourOrDOW:int?1##
DECLARE @All int = ##All:int?1##
DECLARE @UsedId int = ##UserId:int##


IF @Choice = 1
  SELECT
    DATEPART("hour", CreationDate) AS [Hour when posts were added],
    COUNT(*) AS [Number of posts per hour, UTC (GMT)],
    COUNT(case PostTypeId when 1 then 1 else null end) AS [Including questions]
  FROM Posts
  WHERE OwnerUserId = CASE @All WHEN 1 THEN OwnerUserId ELSE @UsedId END
  GROUP BY DATEPART("hour", CreationDate)
ELSE IF @Choice = 2
  WITH tmp AS
    (
    SELECT
      *,
      DATEPART("weekday", CreationDate) AS wpart,
      DATENAME(dw, CreationDate) AS wname
    FROM Posts
    )
  SELECT
    wpart AS [Weekday post were added on],
    -- Little hack to show DoW with data.SO graph builder
    wname,
    COUNT(*) AS [Number of posts per weekday]
  FROM tmp
  WHERE OwnerUserId = CASE @All WHEN 1 THEN OwnerUserId ELSE @UsedId END
  GROUP BY wpart, wname
  ORDER BY wpart
ELSE IF @Choice = 3
  WITH tmp AS
   (
   SELECT *, ROUND((CAST(DATEPART("weekday", CreationDate) AS float) + CAST(DATEPART("hour", CreationDate) AS float) / 24), 2) AS cd
   FROM Posts
   )
  SELECT
    cd AS [Day of week + time],
    COUNT(*) AS [Number of posts]
  FROM tmp
  WHERE OwnerUserId = CASE @All WHEN 1 THEN OwnerUserId ELSE @UsedId END
  GROUP BY cd
  ORDER BY cd

Enter Parameters

Options:
Switch sites:
loading Hold tight while we fetch your results