当尝试获取时,比如说使用窗口函数分区的中位数,我收到一条错误消息“ SELECT list expression引用既不分组也不聚合的列seller_stock ”,为什么会这样,我必须如何以不同的方式编写这个SQL?我每天有很多记录,我想返回每天的中位数......
SELECT date(snapshot_date) AS period,
PERCENTILE_DISC(**seller_stock**, 0.5) OVER (PARTITION BY snapshot_date) AS median_stock
FROM `table.name`
WHERE snapshot_date >= "2022-04-01"
GROUP BY snapshot_date
Run Code Online (Sandbox Code Playgroud)
小智 6
问题是你不能按 AGG 函数进行分组,因为你已经通过行获得了中位数,所以你只需要该语句的顶行。
您可以使用中间表或辅助表。
这是一个例子:
with median_data as (
select
date(snapshot_date) AS period,
PERCENTILE_DISC(seller_stock, 0.5) OVER (PARTITION BY snapshot_date) AS median_stock,
row_number() over(order by snapshot_date) as r
from `table.name`
where snapshot_date >= "2022-04-01"
)
select period,median_stock from median_data where r = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4177 次 |
| 最近记录: |