我有这个
bundle
表,每个捆绑包可以包含 n
表中的 0 到 items
项目,这是我获取项目中位数的查询
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY r.count) AS median
FROM (
SELECT bundle.id, COUNT(*)
FROM items
JOIN bundle ON bundle.id=items.bundle_id
GROUP BY bundle.id
) AS r;
但是这个查询花费的时间太长并且超时,使用 postgreSQL 将此查询分成批次的最佳方法是什么?
我认为分割查询的唯一明智的方法是创建一个具有
select bundle_id,count(*) ct from items
结果的临时表(在第一个查询中添加捆绑表不会给你带来任何好处),然后可能在 ct 上创建一个索引。
如果分批进行,您会测量什么?您将如何得出结果?例如,如果您有两个组: 1,2,8,9,10 和 1,2,2,2,3 那么第一组的中位数是8,第二组的中位数是2。整个组的中位数是2。