sql - 如何列出正在计算的值?
问题描述
我使用聚合函数来计算出现次数最多的唯一值(可以说是 5)。我现在想列出这些在列中计数的唯一值 - 为如何做到这一点而苦苦挣扎。我什至可以这样做吗?我正在使用 PostgreSQL。
SELECT IDs,
COUNT(DISTINCT people) AS num_people
FROM class
GROUP BY IDs
ORDER BY COUNT(DISTINCT people) desc
LIMIT 1
当前样本结果:
-------------------------------------
| **IDs** | **num_people** |
-------------------------------------
| Aabbcc | 5 |
-------------------------------------
我希望这个结果在你的末尾有新的列。(它也可以是单独的行 - 它不必全部在一行 - 但这将是理想的)
-----------------------------------------------------------------------
| **IDs** | **num_people** | **people_listed** |
-----------------------------------------------------------------------
| Aabbcc | 5 | Coco, Riley, Allan, Betty, Cici |
-----------------------------------------------------------------------
解决方案
您可以使用聚合函数ARRAY_AGG
或STRING_AGG
为此:
SELECT IDs,
COUNT(DISTINCT people) AS num_people,
STRING_AGG(DISTINCT people, ', ') AS people_listed
FROM class
GROUP BY IDs
ORDER BY COUNT(DISTINCT people) desc
LIMIT 1
推荐阅读
- javascript - 在 mousemove 事件上移动元素:移动太快时失败(vuejs)
- python - 使用python为具有特定长度的字符串(int和chars的混合)生成随机字符串
- wso2 - Wso2Api-M 密钥管理器返回无效的租户域 null
- typescript - 打字稿让在块范围之外使用导致应用程序中的ReferenceError
- java - 我正面临 Volley Time out Error 和 mainThread 错误
- mysql - 在 ')' 附近出现 Sql Query 错误语法错误
- powerapps - 在 PowerApp 中显示文本框的建议
- c# - 如果我们在 c# 中实现 sqlConnection 对象是带有实例的静态属性会发生什么?
- vba - VBA - 是否有任何替代 array() 函数在 vba 中创建空数组?
- javascript - 使用传递的变量加载 express 模板会返回错误“在将标头发送到客户端后无法设置标头”