并使用雪花数据库。我正在尝试解决一个任务,但不知道从哪里开始。我想计算出BIDS高于/低于/等于PRICE的百分比以及可接受的价格。 有数千个ID,下面是其中之一。该示例数据具有2个等于价格(180)的投标,一个高于价格(200)的投标,和一个低于价格(100)的投标。接受价格与价格的百分比差异(100/180 = 0.55)
ID, PRICE,ID, BIDS,ACCEPTED
2134323,180,2134323,200,FALSE
2134323,180,2134323,180,FALSE
2134323,180,2134323,180,FALSE
2134323,180,2134323,100,TRUE
预期输出:
ID, PRICE ACCEPTED HIGHER LOWER EQUAL
2134323 180 0.55 0.25 0.25 0.5
任何建议如何完成此操作?
答案 0 :(得分:1)
条件聚合应该起作用:
select id, price
max(case when accepted = 'TRUE' then bids end) / price as accepted,
avg(case when bids > price then 1.0 else 0 end) as higher,
avg(case when bids < price then 1.0 else 0 end) as lower,
avg(case when bids = price then 1.0 else 0 end) as equal
from t
group by id, price;