gpt4 book ai didi

sql - 聚合到数组后如何计算唯一行

转载 作者:搜寻专家 更新时间:2023-10-30 22:23:34 25 4
gpt4 key购买 nike

尝试以只读方式解决问题。

我的表格(答案)如下所示:

|    user_id     |    value    |   
+----------------+-------------+
| 6 | pizza |
| 6 | tosti |
| 9 | fries |
| 9 | tosti |
| 10 | pizza |
| 10 | tosti |
| 12 | pizza |
| 12 | tosti |
| 13 | sushi | -> did not finish the quiz.

注意:实际表格有超过 15 个不同的可能值。 (问题的答案)。


我已经能够创建下表:

|    value arr   |     count    |  user_id  |   
+----------------+--------------+-----------+
| pizza, tosti | 2 | 6 |
| fries, tosti | 2 | 9 |
| pizza, tosti | 2 | 10 |*
| pizza, tosti | 2 | 12 |*
| sushi | 1 | 13 |

我不确定 * 行是否出现在我当前的查询中(数据库有 30k 行和 15+ 个值选项)。这里的问题是“计数”计算的是答案的数量,而不是唯一结果的数量。

当前查询看起来有点像:

select string_agg(DISTINCT value, ',' order by value) AS value, user_id,
COUNT(DISTINCT value)
FROM answers
GROUP BY user_id;

寻找如下表所示的唯一答案组合:

|    value arr   | count unique |   
+----------------+--------------+
| pizza, tosti | 3 |
| fries, tosti | 1 |
| sushi | 1 | --> Hidden in perfect situation.

尝试了一堆由工具编写和生成的查询。从 super 简单到非常复杂,我总是以计算答案而不是用户的独特组合而告终。

如果这是一个重复的问题,请将我重定向到它。这几天学到了很多东西,但还没有找到答案。

如有任何帮助,我们将不胜感激。

最佳答案

这就是您所需要的。你快到了。

select t1.value, count(1) From (
select string_agg(DISTINCT value, ',' order by value) AS value, user_id
FROM answers
GROUP BY user_id) t1
group by t1.value;

关于sql - 聚合到数组后如何计算唯一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57701354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com