victorious-magazine-23782
11/29/2023, 6:12 PMvictorious-magazine-23782
11/29/2023, 6:44 PMswift-helmet-3648
11/29/2023, 10:00 PMvictorious-magazine-23782
11/30/2023, 8:52 AMvictorious-magazine-23782
11/30/2023, 8:54 AMswift-helmet-3648
11/30/2023, 2:00 PMhelpful-application-7107
11/30/2023, 3:50 PMidcompute_result()helpful-application-7107
11/30/2023, 3:51 PMcountusersvictorious-magazine-23782
11/30/2023, 3:51 PMhelpful-application-7107
11/30/2023, 3:52 PMusersvictorious-magazine-23782
11/30/2023, 3:52 PMhelpful-application-7107
11/30/2023, 3:52 PMvictorious-magazine-23782
11/30/2023, 3:52 PMvictorious-magazine-23782
11/30/2023, 3:52 PMhelpful-application-7107
11/30/2023, 3:53 PMhelpful-application-7107
11/30/2023, 3:53 PMvictorious-magazine-23782
11/30/2023, 3:53 PMhelpful-application-7107
11/30/2023, 3:53 PMDenominatorvictorious-magazine-23782
11/30/2023, 3:53 PMvictorious-magazine-23782
11/30/2023, 3:53 PMvictorious-magazine-23782
11/30/2023, 3:54 PMhelpful-application-7107
11/30/2023, 3:54 PMhelpful-application-7107
11/30/2023, 3:54 PMhelpful-application-7107
11/30/2023, 3:55 PMvictorious-magazine-23782
11/30/2023, 3:55 PMvictorious-magazine-23782
11/30/2023, 3:56 PMvictorious-magazine-23782
11/30/2023, 3:57 PM-- Gross TTV (revenue)
WITH
  __rawExperiment as (
    SELECT
      id,
      created_at as timestamp,
      experiment as experiment_id,
      variation_id as variation_id
    FROM
      experiments.assignments
  ),
  __experiment as ( -- Viewed Experiment
    SELECT
      e.id as id,
      cast(e.variation_id as varchar) as variation,
      e.timestamp as timestamp,
      e.timestamp as conversion_start,
      e.timestamp + INTERVAL '72' hour as conversion_end
    FROM
      __rawExperiment e
    WHERE
      e.experiment_id = 'my_experiment'
      AND e.timestamp >= from_iso8601_timestamp('2023-11-10T17:30:00.000Z')
  ),
  __metric as ( -- Metric (Gross TTV)
    SELECT
      id as id,
      m.value as value,
      m.timestamp as timestamp,
      m.timestamp as conversion_start,
      m.timestamp as conversion_end
    FROM
      (
        SELECT
          id,
          timestamp,
          itinerary_sell_rate_total.usd_amount AS value
        FROM
          experiments.master
      ) m
    WHERE
      m.timestamp >= from_iso8601_timestamp('2023-11-10T17:30:00.000Z')
  ),
  __distinctUsers as (
    -- One row per user/dimension
    SELECT
      e.id,
      cast('All' as varchar) as dimension,
      (
        CASE
          WHEN count(distinct e.variation) > 1 THEN '__multiple__'
          ELSE max(e.variation)
        END
      ) as variation,
      MIN(e.conversion_start) as conversion_start,
      MIN(e.conversion_end) as conversion_end
    FROM
      __experiment e
    GROUP BY
      e.id
  ),
  __userMetric as (
    -- Add in the aggregate metric value for each user
    SELECT
      d.variation,
      d.dimension,
      d.id,
      LEAST(3500, SUM(value)) as value
    FROM
      __distinctUsers d
      JOIN __metric m ON (m.id = d.id)
    WHERE
      m.timestamp >= d.conversion_start
      AND m.timestamp <= d.conversion_end
    GROUP BY
      variation,
      dimension,
      d.id
  ),
  __overallUsers as (
    -- Number of users in each variation
    SELECT
      variation,
      dimension,
      1.0 * COUNT(*) as users
    FROM
      __distinctUsers
    GROUP BY
      variation,
      dimension
  ),
  __stats as (
    -- One row per variation/dimension with aggregations
    SELECT
      m.variation,
      m.dimension,
      1.0 * COUNT(*) as count,
      AVG(1.0 * coalesce(m.value, 0)) as m_mean,
      VAR_SAMP(coalesce(m.value, 0)) as m_var,
      1.0 * sum(m.value) as m_sum
    FROM
      __userMetric m
    GROUP BY
      m.variation,
      m.dimension
  ),
  __overall as (
    SELECT
      u.variation,
      u.dimension,
      u.users as count,
      s.m_mean * s.count / u.users as mean,
      (
        CASE
          WHEN u.users > 1 THEN (s.count -1) * s.m_var / (u.users -1) + s.count * (u.users - s.count) * power(s.m_mean, 2) / (u.users * (u.users -1))
          ELSE 0
        END
      ) as variance,
      u.users as users
    FROM
      __overallUsers u
      LEFT JOIN __stats s ON (
        s.variation = u.variation
        AND s.dimension = u.dimension
      )
  )
SELECT
  variation,
  dimension,
  count,
  mean,
  (
    CASE
      WHEN variance > 0 THEN sqrt(variance)
      ELSE 0
    END
  ) as stddev,
  users
FROM
  __overallhelpful-application-7107
11/30/2023, 3:58 PMhelpful-application-7107
11/30/2023, 3:58 PMvictorious-magazine-23782
11/30/2023, 3:59 PMvictorious-magazine-23782
11/30/2023, 3:59 PMvictorious-magazine-23782
11/30/2023, 3:59 PMhelpful-application-7107
11/30/2023, 4:04 PMparseInthelpful-application-7107
11/30/2023, 4:04 PMparseFloatvictorious-magazine-23782
11/30/2023, 4:05 PMvictorious-magazine-23782
11/30/2023, 4:07 PMhelpful-application-7107
11/30/2023, 4:07 PMhelpful-application-7107
11/30/2023, 4:08 PMvictorious-magazine-23782
11/30/2023, 4:08 PMhelpful-application-7107
11/30/2023, 4:09 PMparseIntvictorious-magazine-23782
11/30/2023, 4:10 PMvictorious-magazine-23782
11/30/2023, 4:11 PMhelpful-application-7107
11/30/2023, 4:31 PM