[英]SQL get array in postgresql
有桌子(测试):
color | count_var |
--------------------+-------------+
red & white | 15 |
black & white | 10 |
black | 10 |
black & white | 15 |
red & white | 15 |
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.