我有一个表mock
有一些字符串值:
CREATE TABLE mock (prop_a TEXT, prop_b TEXT);
一些随机数据
INSERT INTO mock (prop_a, prop_b) SELECT 'fake_a' || (i % 100), 'fake_b' || (i % 100) FROM generate_series(1, 100000) i
我想获得数组形式的值摘要。
类似于:
SELECT array_agg(DISTINCT prop_a), array_agg(DISTINCT prop_b) FROM mock
假设,我只想为每一列取10个不同的值(以便向用户显示一个示例)。
一个人可以
SELECT agg_a.array_agg, agg_b.array_agg
FROM
(SELECT array_agg(prop_a)
FROM
(
SELECT DISTINCT prop_a
FROM mock
LIMIT 10
) dist_a) agg_a,
(SELECT array_agg(prop_b)
FROM
(
SELECT DISTINCT prop_b
FROM mock
LIMIT 10
) dist_b) agg_b
但理想情况下,语法应该是:
SELECT array_agg(DISTINCT prop_a LIMIT 10), array_agg(DISTINCT prop_b LIMIT 10) FROM mock
但我在文件里没有找到类似的东西。有类似的东西吗?或者至少是一种最简单的查询方式?
最佳答案
您可以获取适当的数组切片:
SELECT (array_agg(DISTINCT prop_a))[1:10],
(array_agg(DISTINCT prop_b))[1:10]
FROM mock;
关于postgresql - 取样前n个不同的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57805709/