如何使用窗口函数根据奇偶行号过滤掉结果,没有现有列作为行ID

Posted

技术标签:

【中文标题】如何使用窗口函数根据奇偶行号过滤掉结果,没有现有列作为行ID【英文标题】:How to filter out results on the basis of odd and even row number using window functions, no existing column as Row ID 【发布时间】:2021-05-23 07:11:52 【问题描述】:

我目前正在使用以下代码,但它不起作用,请指导我-

select name, Continent, LifeExpectancy
from world.country
where mod(Row_Number()
over(order by Continent),2)=0;

【问题讨论】:

你能提供一些样本数据+你得到的结果吗? 你想完成什么? 【参考方案1】:

您通常需要一个子查询:

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (ORDER BY Continent) rn
    FROM world.country
)

SELECT name, Continent, LifeExpectancy
FROM cte
WHERE rn % 2 = 0;  -- for evens

【讨论】:

【参考方案2】:

您可以创建子查询来使用 WINDOW 功能。 你可以试试这个吗?

select name, Continent
from (
select name, Continent, LifeExpectancy, Row_Number() over(order by Continent) rn
from world.country) rs
where mod(rs.rn,2)=0;

【讨论】:

以上是关于如何使用窗口函数根据奇偶行号过滤掉结果,没有现有列作为行ID的主要内容,如果未能解决你的问题,请参考以下文章

windows下如何过滤CMD的命令结果(按行号过滤)

如何根据唯一列和单独列中的最高量过滤结果集?

如何根据列的值过滤 SQLAlchemy 结果?

使用 rails audited gem 根据已审核的更改过滤掉结果

如何根据列中的公式结果运行过滤器?

使用 groupby 的结果过滤 pandas 数据框