繁体   English   中英

在postgresql中获取SQL数组

[英]SQL get array in postgresql

有桌子(测试):

  color              |  count_var  | 
 --------------------+-------------+
  red & white        |          15 |
  black & white      |          10 |
  black              |          10 |
  black & white      |          15 |
  red & white        |          15 |              
  1. 起初我需要GROUP BY'count_var'
  2. 然后我需要选择最大值和相应的'count_var'
    SELECT MAX(mycount) as mode
    FROM (SELECT COUNT(*) as mycount, count_var
          FROM test
          GROUP BY count_var) as t;

有结果

 mode 
------
 3

我最初需要什么? 结果就像

 mode | count_var
------+----------
 3    |     15

然后我需要将此结果在另一个表中插入到类型为integer []的字段中。

插入结果应为{3,15}

我怎样才能做到这一点?

好吧,你可以这样做:

SELECT ARRAY[num_mycount, mycount]
FROM (SELECT count_var, COUNT(*) as mycount,
             COUNT(*) OVER (PARTITION BY COUNT(*)) as num_mycount
      FROM test
      GROUP BY count_var
     ) t
ORDER BY mycount DESC
FETCH FIRST 1 ROW ONLY;

有趣的是,我认为我之前没有使用过COUNT(*) OVER (PARTITION BY COUNT(*)) 我已经习惯了将窗口函数和聚合混合在一起,但我可以想象有些人会发现这有点令人困惑。

第一个COUNT(*)是一个窗口函数,用于计算结果集分区中的行数 - 即聚合后的行数。 第二个是聚合COUNT(*) 因此,效果是计算聚合后具有相同计数的值的数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM