sql - 在 PosgreSql 中使用 Rank() 函数选择第二个更高的值
问题描述
我试过这个:
SELECT
code_nuance, nb_voix,
RANK () OVER ( ORDER BY nb_voix DESC) AS rank
FROM election_2015.resultat_nuance_departement
WHERE rank = 2;
与别名相同:
SELECT
rnd.code_nuance, rnd.nb_voix,
RANK () OVER ( ORDER BY rnd.nb_voix DESC) AS rank
FROM election_2015.resultat_nuance_departement rnd
WHERE rank = 2;
Rank 在 WHERE close 中不被识别。它说“排名不存在”
任何人?
欢迎任何建议,ty!
解决方案
与所有其他列别名一样,您不能在where
子句中使用别名。为此,子查询很方便:
SELECT x.*
FROM (SELECT rnd.code_nuance, rnd.nb_voix,
RANK() OVER (ORDER BY rnd.nb_voix DESC) AS rank
FROM election_2015.resultat_nuance_departement rnd
) x
WHERE rank = 2;
如果值都是唯一的,您还可以使用FETCH
:
select rnd.*
from election_2015.resultat_nuance_departement rnd
order by rnd.db_voix desc
offset 1 fetch first 1 row only;
推荐阅读
- java - Tomcat 泽西 NoSuchMethodError
- swift - 使用iOS13无法读取ePassport的NFC芯片
- stripe-payments - “ChargeCreateOptions”不包含“SourceId”的定义
- java - Arc JavaFX 中的 startAngle 不是它所说的
- c# - 使用 C# 将 XML 转换为 HTML 时出现异常
- c++ - 当错误条件传递给它时,while循环无法退出
- reactjs - Django + Babel + Webpack 意外令牌
- c# - 获取随机列表输出
- html - 图片背景 URL 属性未获取图片?
- hive - Hive:从表中删除重复的行