【发布时间】:2014-01-23 10:58:53
【问题描述】:
我有一个表格,其中存储了不同类别的用户 ID 及其分数。用户数量将不断变化。这些点也会不断变化(就像 stackoverflow 中的点)。因此,登录的用户将看到一个仪表板,其中显示了 3 个类别中的每一个 - 你有 850 分,前面有 950 个用户。这是我现在的查询 -
WITH USERS AS (
SELECT COUNT(*) TOT
FROM user_pointS
)
SELECT ' You have ' || points_cat1 ||' points and there are '|| tot-rnk || ' ahead of you '
FROM (
SELECT ID,
points_cat1,
rank() OVER (ORDER BY points_cat1 DESC ) AS RNK
FROM user_pointS
) AS RANKED,
USERS
WHERE ID = 10
有没有更好的方法(性能方面)?我将不得不为 3 列重复此操作?
【问题讨论】:
标签: sql performance postgresql ranking