有一个表,其中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 |
-----------------------------------
发布于 2019-04-10 21:52:27
在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;
?
用于指定表排序的列。记住:表代表无序的集合,所以没有这样的列,选择可以是任何顺序。
您可以使用string_agg()
在SQL Server 2017+中执行类似的操作。在早期版本中,您必须使用XML方法,这是相当令人不快的。
https://stackoverflow.com/questions/55621773
复制相似问题