2016-01-06 3 views
-1

Что-то, вероятно, неправильно с внутренним соединением здесь, так как два вопроса, с которыми я соединяюсь, хороши, если они запускаются отдельно, но я не могу понять, что ... :(Прошу прощения за то, что, вероятно, простой вопрос для большинство из вас здесь!Почему я получаю неверную ошибку ссылки на столбец с этим запросом?

Я попытался не ссылающийся на S, как пользователи, но я все еще получаю недействительный ссылочный столбец ошибки ...

SELECT time_spent_bucket, totalrev 
FROM 
(
SELECT session_aggregate.app_timespent AS time_spent_bucket, COUNT(*) AS users 
FROM 
    (
    SELECT session_info.s, 
    case when SUM(session_info.session_length)/60 > 200 then "200+" 
    when SUM(session_info.session_length)/60 >= 100 then "100 <-> 200" 
    when SUM(session_info.session_length)/60 >= 50 then "50 <-> 99" 
    when SUM(session_info.session_length)/60 >= 20 then "20 <-> 49" 
    when SUM(session_info.session_length)/60 >= 10 then "10 <-> 19" 
    when SUM(session_info.session_length)/60 >= 5 then "5 <-> 9" 
    else "<5" end AS app_timespent 
    FROM 
     (
     SELECT kt_session(calc_session.s, calc_session.evt_lst, 5) AS (s, session_number, session_length) 
     FROM 
      (
      SELECT session_set.s, collect_set(session_set.timestamps) evt_lst 
      FROM 
       (
       SELECT total_list.s, total_list.timestamps 
       FROM 
        (
        SELECT s, utc_timestamp AS timestamps 
        FROM appl9_evt 
        WHERE month = 201512 
        and s is not null 
        UNION ALL 
        SELECT s, utc_timestamp AS timestamps 
        FROM appl9_evt 
        WHERE month = 201512 
        and s is not null 
        ) total_list 
       )session_set 
      GROUP BY session_set.s 
      ) calc_session 
     ORDER BY s,session_number DESC 
     )session_info 
    GROUP BY session_info.s 
    )session_aggregate 
GROUP BY session_aggregate.app_timespent 
ORDER BY time_spent_bucket) ts 
INNER JOIN 
(
SELECT s, v 
FROM appl9_mtu 
WHERE month = "201507" 
GROUP BY s, v 
     ) totalrev 
ON totalrev.s = ts.s 
+0

Changed к этому, но все еще получаю ту же ошибку, в то же «Линия 51»: Выб, v , time_spent_bucket [... же] INNER JOIN ( SELECT, s, V ОТ appl9_mtu Где месяц = ​​"201507" GROUP BY s, V ) totalrev ПО totalrev.s = ts.s – Janalyst

ответ

0

Ваш присоединиться к референции totalrev.s, но вы псевдонимами, что столбец 'users' в подзапросе totalrev. Просто измените свое соединение, чтобы ссылаться на столбец пользователей:

ON totalrev.users = ts.s 

Вы также не можете псевдоним столбца s в подзапросе totalrev.

В дополнение к вышесказанному, ваш подзапрос ts также не имеет столбца 's', поэтому нет ts.s для присоединения. Вы должны включить это в TS подзапроса отбора (а также группу по), что-то вроде:

SELECT session_aggregate.s, session_aggregate.app_timespent AS time_spent_bucket, COUNT(*) AS users 
... 
GROUP BY session_aggregate.s, session_aggregate.app_timespent 
+0

я пытался это, но я до сих пор получаю ошибку «неправильной ссылки на столбцы» :( – Janalyst

+0

@Janalyst Я обновил ответ - ваш подзапрос ts также не имеет 's' столбец для соединения. – morgb

+0

Правильно ... Мне также пришлось сменить s и v в первой строке на totalrev.s и totalrev.v, и, похоже, он работает. Спасибо!!! – Janalyst