首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在postgres查询中,我可以将一列划分为四分位以用于分区结果吗?

在postgres查询中,我可以将一列划分为四分位以用于分区结果吗?
EN

Stack Overflow用户
提问于 2021-04-19 22:24:45
回答 1查看 42关注 0票数 0

我有一个根据特定列对数据进行分区的查询,但现在我正在尝试根据我的数据集中的四分位对其进行分区。例如,假设我有“科技”和“零售”的行业,但我将其分解为四分位数,那么每个行业将有4个额外的分区。

我怎样才能合并它呢?我需要先得到四分位数,然后再把它传递给下面的代码吗?或者,我可以在分区中按行直接将收入列划分为四分位数吗?

代码语言:javascript
复制
with data as (
    select
        g.ticker,
        g.industry,
        g.countryname,
        g.exchange,
        c.year,
        c.revenue,
        ROW_NUMBER() OVER (PARTITION BY g.industry ORDER BY c.revenue ASC) AS groupingNumRank,
        AVG(c.revenue) over (PARTITION BY g.industry) as industavg,
        ... and so on

我可能想尝试其他方法来拆分数据(可能以十进制、百分比等为单位),如果可能的话,我会有兴趣学习如何进行拆分。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-19 23:17:01

你显然想要:

代码语言:javascript
复制
select ntile(4) over (partition by g.industry order by c.revenue) as quartile

请注意,ntile()会确保平铺的大小尽可能相等。这可能会导致具有相同收入的两行位于不同的平铺中。

如果你不想要这个行为,你可以使用rank()和算术:

代码语言:javascript
复制
select ceiling( rank() over (partition by g.industry order by c.revenue) * 1.0 / 
                count(*) over (partition by g.industry)
              ) as quartile
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67163842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档