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;
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;