Postgre SQL   发布时间:2022-05-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了选择整数数组数组的每个第一个元素到数组大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如何选择整数数组的每个第一个元素到数组?
{{1,2,3},{2,15,32},{5,16,14},…} – > {1,5,…}
由于POSTGResql允许在数组大小之外请求切片,并假设永远不会有超过999个子数组,我们可以使用这个怪异
WITH data AS (
  SELECT arraY[arraY[1,3],array[2,32],array[5,14]] as arr)
SELECT array_agg(arr)
  FROM (SELECT unnest(arr[1:999][1]) as arr from data) data2;

如果需要的话,你当然可以增加999的常数,这只是我投入的一个随机大数字.

之所以如此复杂,是因为如果你只使用arr [1:999] [1],你仍会得到一个二维数组,但只有第一个元素.在这种情况下{{1},{2},{5}}.如果我们使用unnest(),我们可以将它变成一个集合,然后可以通过subSELEct将其输入到array_agg()中.

使用array_agg(unexst(arr [1:999] [1]))会很好,但聚合函数不喜欢集合,我不知道是否有办法在运行中转换它.

您也可以使用实际的数组长度,但这可能会导致不必要的计算

SELECT unnest(arr[1:array_length(arr,1)][1]) as arr from data

注意

如果阵列可以被一个级别取消,你可以只索引数组,然后使用array_agg()将它转换回一个语法更简单的数组

WITH data AS
  (SELECT arraY[1,3] as arr
   union all SELECT array[2,32] as arr
   union all SELECT array[5,14] as arr)
SELECT array_agg(arr[1]) from data;

CTE只用于输入数据,实际的肉是array_agg(arr [1]).这当然适用于任意数量的输入数组.

大佬总结

以上是大佬教程为你收集整理的选择整数数组数组的每个第一个元素到数组全部内容,希望文章能够帮你解决选择整数数组数组的每个第一个元素到数组所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:1632]3]3}5{5