我有一个根据特定列对数据进行分区的查询,但现在我正在尝试根据我的数据集中的四分位对其进行分区。例如,假设我有“科技”和“零售”的行业,但我将其分解为四分位数,那么每个行业将有4个额外的分区。
我怎样才能合并它呢?我需要先得到四分位数,然后再把它传递给下面的代码吗?或者,我可以在分区中按行直接将收入列划分为四分位数吗?
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我可能想尝试其他方法来拆分数据(可能以十进制、百分比等为单位),如果可能的话,我会有兴趣学习如何进行拆分。
发布于 2021-04-19 23:17:01
你显然想要:
select ntile(4) over (partition by g.industry order by c.revenue) as quartile请注意,ntile()会确保平铺的大小尽可能相等。这可能会导致具有相同收入的两行位于不同的平铺中。
如果你不想要这个行为,你可以使用rank()和算术:
select ceiling( rank() over (partition by g.industry order by c.revenue) * 1.0 /
count(*) over (partition by g.industry)
) as quartilehttps://stackoverflow.com/questions/67163842
复制相似问题