首页 > 解决方案 > SQL:如何从表中最常见的值中获取 ID 数组?

问题描述

我在一列中的每个值的计数最多,如下所示:

SELECT col, COUNT(col)
FROM table
GROUP BY col
ORDER BY col DESC;

但我想添加另一列,其中具有这些值的记录的 ID 在数组中。

例如,如果“blueberry”是最常见的值,它旁边的单元格应该显示这些记录的 id,例如 - [1, 21, 123]

标签: sqlpostgresql

解决方案


您可以为每个col获取一个数组:

SELECT col, COUNT(*), ARRAY_AGG(id) as ids
FROM table
GROUP BY col
ORDER BY COUNT(*) DESC;

您可以获取上述查询的第一行:

SELECT col, COUNT(*), ARRAY_AGG(id) as ids
FROM table
GROUP BY col
ORDER BY COUNT(*) DESC
FETCH FIRST 1 ROW ONLY;

这是做你想做的吗?


推荐阅读