SQL 获取数组列中元素频率的最佳方法

SQL Best way to get frequency of elements in array column

SQL 菜鸟问题在这里

我有一个 SQL table 形式

|id | array  |
|---|--------|
|1  | [1,2,3]|
|2  | [2,3,4]|
|2  | [2,5]  |

并且我想获得出现在 array 列的数组中的值的频率。例如 table 我想得到类似

的东西
|value | frequency |
|------|-----------|
|  1   |    1      |
|  2   |    3      |
|  3   |    2      |
|  4   |    1      |
|  5   |    1      |

实现这一目标的最佳方法是什么?

谢谢,任何提示或建议将不胜感激!

使用unnest():

select u.el, count(*)
from t cross join
     unnest(t.array) u(el)
group by u.el;