首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在不同百分比的数据量上运行计算- SQL

在不同百分比的数据量上运行计算- SQL
EN

Stack Overflow用户
提问于 2022-04-13 17:47:42
回答 2查看 30关注 0票数 0

我正在集思广益地探讨如何在包含一年交易量的数据集上找到趋势。

我想平均运行25%的数据观测和75%的数据观测,反之亦然。

如果整个数据集包含1000个观测,我想运行:

this.

  • Inversely,
  1. 的平均值为前25%,然后分别为最底层的75%和平均的75%,得到的平均值依次为前75%、下25%和2.

的平均值。

对于我拥有的总体平均值:avg(transaction_amount)

我知道,为了使分段平均值有用,我必须按照我在SQL代码中已经说明的日期对数据进行排序:

代码语言:javascript
运行
复制
select avg(transaction_amount)
from example.table
order by transaction_date

我现在很难找到一种方法,根据观察的数量,将数据分成25%到75%。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2022-04-13 17:54:00

如果您使用的是MSSQL,那么取决于您所要寻找的输出,这是非常简单的。

代码语言:javascript
运行
复制
SELECT TOP 25 PERCENT
  *
FROM (
   SELECT 
     AVG(transaction_amount) as avg_amt
   FROM example.table
) AS sub
ORDER BY sub.avg_amt DESC
票数 0
EN

Stack Overflow用户

发布于 2022-04-13 18:12:19

使用PERCENT_RANK来查看一个行属于哪个百分比块。然后使用它对数据进行分组:

代码语言:javascript
运行
复制
with data as
(
  select t.*, percent_rank() over (order by transaction_amount) as pr
  from example.table t
)
select
  case when pr <= 0.75 then '0-75%' else '75-100%' end as percent,
  avg(transaction_amount) as avg,
  avg(avg(transaction_amount)) over () as avg_of_avg
from data
group by case when pr <= 0.75 then '0-75%' else '75-100%' end
union all
select
  case when pr <= 0.25 then '0-25%' else '25-100%' end as percent,
  avg(transaction_amount) as avg,
  avg(avg(transaction_amount)) over () as avg_of_avg
from data
case when pr <= 0.25 then '0-25%' else '25-100%' end;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71861813

复制
相关文章

相似问题

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