SQL编号比较和汇总

时间:2019-02-14 01:03:04

标签: sql

并使用雪花数据库。我正在尝试解决一个任务,但不知道从哪里开始。我想计算出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

任何建议如何完成此操作?

1 个答案:

答案 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;