我有一个名为请示表,其中包含以下几列:如何使用日期来分配总和的结果?
id | campaign | module | team | referred | referred_by | createdAt
为了获得军衔,我试图总结的referred_by
独特的事件,然后对他们进行排名。这看起来似乎很有用,但是,当我发现排名会重复时,我会发现这一点。我需要的是也要考虑转介发生的日期(最早的日期应该排在第一位,打破平局)。
这是我原来的查询的例子:
SELECT referral.referred_by AS id,
SUM(1) AS referral_count,
RANK() OVER (ORDER BY referral.count DESC) AS current_position
FROM referral
WHERE referral.campaign = 106 AND
referral.team = 36 AND
DATE_PART('month', referral."createdAt") = DATE_PART('month', NOW()) AND
DATE_PART('year', referral."createdAt") = DATE_PART('year', NOW())
GROUP BY referral.referred_by
ORDER BY referral_count DESC LIMIT 20
SELECT date_trunc(r."createdAt"), r.referred_by, count(*)
其中产量:
id | referral_count | current_position
894 | 3 | 1
895 | 2 | 2
896 | 2 | 2
897 | 1 | 4
它应该理想地:
id | referral_count | current_position
894 | 3 | 1
895 | 2 | 2
896 | 2 | 3
897 | 1 | 4
谢谢!
将这项工作正常 - 通过引用排序“createdAt” ? –
https://stackoverflow.com/questions/7747327/sql-rank-versus-row-number – Indent
indent - 问题是 - 它会排列createdAt?我不认为你的代码会。它会给出唯一的排名数字,但不是指定的。请看我的答案,看看我的意思。 –