Найти последовательность выбора в столбце - PullRequest
0 голосов
/ 11 апреля 2019

Существует таблица, где user_id - для каждого тестируемого, и выбор - это ответ на все три вопроса. Я хотел бы получить все различные последовательности выборов, которые сделал тестируемый, и посчитать последовательность. Есть ли способ написать SQL-запрос для достижения этой цели? Спасибо

----------------------------------
| user_id        | Choice        |      
----------------------------------
|     1          |   a           |
----------------------------------
|     1          |   b           |    
----------------------------------
|     1          |   c           |
----------------------------------
|     2          |   b           |
----------------------------------
|     2          |   c           |
----------------------------------    
|     2          |   a           |
----------------------------------

Желаемый ответ:

----------------------------------    
|     choice          |  count   |
----------------------------------
|      a,b,c          |    1     |
----------------------------------
|      b,c,a          |    1      |
-----------------------------------

1 Ответ

1 голос
/ 11 апреля 2019

В BigQuery вы можете использовать функции агрегирования:

select choices, count(*)
from (select string_agg(choice order by ?) as choices, user_id
      from t
      group by user_id
     ) t
group by choices;

? для столбца, который определяет порядок таблицы.Помните: таблицы представляют неупорядоченные наборы, поэтому без такого столбца выбор может быть в любом порядке.

В SQL Server 2017+ вы можете сделать нечто подобное, используя string_agg().В более ранних версиях вы должны использовать метод XML, что довольно неприятно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...