【发布时间】:2017-03-21 05:46:12
【问题描述】:
我有下表:
id partid orderdate qty price
1 10 01/01/2017 10 3
2 10 02/01/2017 5 9
3 11 01/01/2017 0.5 0.001
4 145 02/01/2017 5 18
5 10 12/12/2016 8 7
6 10 05/07/2010 81 7.5
基本上,我想将最近一次购买的零件与24 months 期间同一零件的另一次购买进行比较。就此而言,将id=2 与id = 1,5 进行比较。
我想检查最新的orderdate(每个零件)的价格是否高于该零件过去 24 个月的平均价格。
所以首先我需要计算平均价格:
partid avgprice
10 (3+9+7)/3=6.33 (7.5 is out of range)
11 0.001
145 18
我还需要知道每个零件的最新订购日期:
id partid
2 10
3 11
4 145
然后我需要检查 id=2、id=3、id=6(最新购买)是否大于平均值。如果他们是我需要返回他们的partid。
所以我应该有这样的东西:
id partid avgprice lastprice
2 10 6.33 9
3 11 0.001 0.001
4 145 18 18
最后我需要返回partid=10,因为9>6.33
现在我的问题...
我不确定如何在PostgreSQL 中找到最新订单。
我试过了:
select id, distinct partid,orderdate
from table
where orderdate> current_date - interval '24 months'
order by orderdate desc
这给出了:
错误:“distinct”处或附近的语法错误。
我有点迷路了。我知道我想做什么,但我不能把它翻译成 SQL。任何人都可以帮忙吗?
【问题讨论】:
标签: sql postgresql greatest-n-per-group