首页 > 解决方案 > 如何列出正在计算的值?

问题描述

我使用聚合函数来计算出现次数最多的唯一值(可以说是 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 | 
 -----------------------------------------------------------------------  

标签: sqlpostgresql

解决方案


您可以使用聚合函数ARRAY_AGGSTRING_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 

推荐阅读