Может ли команда ORDER BY работать в SQL, когда VIEW присоединяется к запросу? - PullRequest
0 голосов
/ 29 мая 2020

Я постарался предоставить как можно более четкую информацию. Я использую данные Periscope для записи SQL.

У меня есть набор данных, и я могу, используя SQL, показанный ниже, получить таблицу данных, которая выглядит примерно так (первая строка показала только и значение первого столбца обрезано для защиты данных):

Image shows a table:

  • первый левый столбец - это значение I я ищу (a.value),
  • второй столбец - это количество людей, которые ответили (a.No_Of_Texters),
  • третий - общее количество количество раз, когда на вопрос был дан ответ (b.total_responses_to_Q) ,
  • четвертый столбец - это общий процент, который это дает (1 * a.No_Of_Texters / b.total_responses_to_Q в процентах )
  • итак, в целом мы видим, что 54% ​​людей, ответивших на этот вопрос, получили a.value «кому еще можно поговорить»
  • Я заказал в процентах от c, и ограничил поиск, чтобы получить первые 6 результатов.

Это SQL I u sed, чтобы создать это:

`select
 a.value, a.No_Of_Texters, b.total_responses_to_Q, 1 * 
 a.No_Of_Texters/b.total_responses_to_Q as percentage
 from
 (select
 tsrv.value as value, count(distinct tsrv.response_id) as No_Of_Texters 
 from
 texter_survey_response_value tsrv
 where
 tsrv.question_id in (84)
 group by value) a
 join(
 select
 count(distinct tsrv.response_id) as total_responses_to_Q
 from
 texter_survey_response_value tsrv
 where
 tsrv.question_id in (84)) b
 order by percentage desc
 limit 6`

У меня есть представления, которые нужно объединить с запросом SQL, чтобы я мог фильтровать верхнюю часть панели мониторинга перископа с помощью фильтров, которые мы уже настроили (например, возраст '14-17 лет ').

Я бы хотел, чтобы при фильтрации числа обновлялись и показывали мне:

  • новый номер. текстовщиков (a.no_of_texters), ответивших на этот вопрос, и
  • новое общее количество ответов (b.total_responses_to_Q).
  • Это сгенерирует новый процент для этой популяции 14-17 лет.

Я хотел бы ввести следующие объединения: - join texter_survey_response tsr на tsr.response_id = tsrv.response_id - присоединиться к [ general_sigtables_withdemo как gs] на gs.conversation_id = tsr.conversation_id - присоединиться к [ partners_keyid как p ] на p.conversation_id = tsr. talk_id

Существует также команда where, которую необходимо добавить для фрагмента SQL, который нам нужен для активации фильтров. где [ sn_genfilterdynami c]

Однако я сталкиваюсь с проблемой всякий раз, когда я добавляю SQL, необходимый для создания фильтра - я вижу следующую ошибку: мне не нравится, что я использую функции ORDER BY или LIMIT в конце сценария SQL:

error on periscope around ORDER BY

, но если я удалю эти две строки с конца сценария SQL:

`order by percentage desc
limit 6`

Затем я получаю следующую ошибку ... как кажется, я не могу завершить запрос при соединении.

second error encountered on periscope

Вот новый SQL, который я пытаюсь использовать для добавления объединений, которые позволят мне использовать фильтры:

`select
a.value, a.No_Of_Texters, b.total_responses_to_Q, 1 * a.No_Of_Texters/b.total_responses_to_Q 
as percentage
from
(select
tsrv.value as value, count(distinct tsrv.response_id) as No_Of_Texters 
from
texter_survey_response_value tsrv
join texter_survey_response tsr on tsr.response_id = tsrv.response_id
join [general_sigtables_withdemo as gs] on gs.conversation_id = tsr.conversation_id 
join [partners_keyid as p] on p.conversation_id = tsr.conversation_id
where
tsrv.question_id in (84)
and [sn_genfilterdynamic]
group by value) as a
join(
select
count(distinct tsrv.response_id) as total_responses_to_Q
from
texter_survey_response_value tsrv
join texter_survey_response tsr on tsr.response_id = tsrv.response_id
join [general_sigtables_withdemo as gs] on gs.conversation_id = tsr.conversation_id 
join [partners_keyid as p] on p.conversation_id = tsr.conversation_id
where
tsrv.question_id in (84)
and [sn_genfilterdynamic]) as b
order by percentage desc
limit 6`

Если это так , Я могу потерять команды ORDER BY и LIMIT в конце моего SQL скрипта ...

Но я надеялся, что кто-то сможет объяснить мне, почему я не смогу завершить свой запрос одновременно с этим или без них? И есть ли какие-то альтернативы или явно очевидные ошибки.

Я относительно новичок в SQL, и я пытаюсь учиться, но это поставило меня в тупик

Спасибо,

Джесс

...