СУММИРОВАНИЕ И ГРУППОВОЙ ВЫВОД ПО ДНЯМ SQL

#sql #google-bigquery

#sql #google-bigquery

Вопрос:

Я не могу ссылаться на псевдонимы Gross_Demand и Units.

 ,(CASE WHEN CONCAT(',',post_event_list,',') LIKE '%,1,%' THEN SPLIT(item, ";")[safe_offset(3)] END) Gross_Demand
  ,(CASE WHEN CONCAT(',',post_event_list,',') LIKE '%,1,%' THEN SPLIT(item, ";")[safe_offset(2)] END) Units
  

Комментарии:

1. Привет, Виван, добро пожаловать в Stack Overflow. Мы — сообщество помощи, но мы не можем выполнить работу за вас. Пожалуйста, сформулируйте ваш вопрос как можно более обобщенно, чтобы другим людям с такой же проблемой было легко понять как вопрос, так и найти ответ для своей ситуации. В частности, спросите себя, как вы можете свести инструкцию SQL к сути рассматриваемой проблемы.

Ответ №1:

Намеренно не даю вам конкретного ответа, но я бы структурировал ваш запрос следующим образом:

 -- Declare your variables
DECLARE StartDate...

with hits as (
  -- select what you need from your hits table, filter and unnest here
),
products as (
  -- select and filter what you need from your products table here
),
joined as (
  -- join the two sources together and do any additional filtering
  select 
    date, visits, orders, gross_demand, units, etc...
  from hits
  join products
),
calcs as (
  select
    *,  
    gross_demand*units as revenue,
    orders/visits * 100 as conversion_pct,
    gross_demand*units/visits as revenue_per_visit
  from joined
)
select * from calcs
  

Разбиение вашей логики на шаги / фрагменты часто упрощает задачу.

Комментарии:

1. Моя проблема с текущей формулой заключается в том, что я не могу ссылаться на строки ниже, поскольку там есть псевдонимы. Валовой спрос и единицы измерения. ,(СЛУЧАЙ, КОГДА CONCAT(‘,’,post_event_list,’,’) КАК ‘%,1,%’ ЗАТЕМ SPLIT (item, «;»)[safe_offset(3)] END) Gross_Demand , (СЛУЧАЙ, КОГДА CONCAT(‘,’,post_event_list,’,’) КАК ‘%,1,%’ ЗАТЕМ SPLIT(item, «;»)[safe_offset(2)] END) Единицы измерения

2. Продолжайте добавлять CTE, если вам нужно. Вы всегда можете ссылаться на все, что определено выше.