【发布时间】:2021-12-04 00:20:33
【问题描述】:
由于没有更好的词,我有这张表叫做“问卷”:
user_id | question answer
--------------------------|-----------
A | can you sing? |Yes
A | can you dance? |Yes
A | did you eat? |No
B | can you sing? |No
C | can you sing? |Yes
C | did you eat? |Yes
我想编写一个查询来显示下面的内容。我知道如何制作最后 3 列,但我需要帮助处理“可以唱歌和跳舞的案例”,比如有多少不同的人可以唱歌和跳舞。 所以我想要这样的输出:
DESIRED OUTPUT:
can sing & dance | can sing | can dance |total user_ids
-----------------|----------|-----------|---------------
1 | 2 |1 |3
解决此问题的最佳方法是什么? 最初,我只使用 SUM(CASE(WHEN ....THEN 1 ELSE 0 END) 来表示“can sing”和“can dance”以及 COUNT(distinct user_id),但这对“can sing and dance'(来自所需输出的第 1 列)的情况,除非我做错了什么。
我的表格的结构与示例相同。用户可以回答他们想回答多少个问题(他们不必回答所有问题,他们可以回答尽可能多的问题)
答案只能是“是”或“否”
我在想,如果我能以某种方式编写一个子查询,让它看起来像这样:
user_id|question& answer
-------|---------
A | can you sing?Yes,can you dance?Yes,did you eat?Yes
B | can you sing?No
C | can you sing?Yes,did you eat?Yes
然后使用一些正则表达式技巧来搜索“问题&答案”列来计数?
我要求最好的方法。最后,我想要 COUNTS,如果我能得到一个非常有用的提示:)(请 ^-^)
我使用的是 Amazon Athena,所以使用 PRESTO SQL
【问题讨论】:
标签: sql amazon-athena presto