1
我期待从我们的数据库中获取累积频率数据。我创建了一个简单的临时表,其中包含我们所见过的所有唯一状态更新计数以及具有这些状态更新量的用户数。SQL:快速累积频率查询(postgres)
Table "pg_temp_4.statuses_count_tmp"
Column | Type | Modifiers
----------------+---------+-----------
statuses_count | integer |
frequency | bigint |
Indexes:
"statuses_count_idx" UNIQUE, btree (statuses_count)
我当前的查询是:
select statuses_count, frequency/(select * from total_statuses)::float, (select sum(frequency)/(select * from total_statuses)::float AS percentage from statuses_count_tmp WHERE statuses_count <= SCT.statuses_count) AS cumulative_percent FROM statuses_count_tmp AS SCT ORDER BY statuses_count DESC;
但这需要相当长一段时间,查询的数量相当迅速增长。因此,对于我拥有的50,000行,我正在查看50k阶乘行数来读取。坐在这里看着这个疑问,我希望这是一个更好的解决方案,但我还没有完成。
希望能得到这样的:
0 0.26975161 0.26975161
1 0.15306534 0.42281695
2 0.05513516 0.47795211
3 0.03050646 0.50845857
4 0.02064444 0.52910301
啊,没有这样的运气。 8.3.9并没有真正的希望在接下来的几天内更新它,但是一旦我们得到更新,我会牢记这个解决方案。 – Peck 2011-01-12 20:27:47