2015-02-24 87 views
0

我有一个包含许多列(d_date,d_amount等)的表(daily_records)。这个表格包含了太多的记录,我在下面给出了一些记录。PostgreSQL来自同一个表的差异日期值的差异

------------------------ 
d_date  | d_amount 
------------------------ 
1-Jan-2011 | 100 
2-Jan-2011 | 110 
3-Jan-2011 | 115 
4-Jan-2011 | 116 
. 
. 
. 
1-Jan-2012 | 220 
2-Jan-2012 | 230 
3-Jan-2012 | 225 
. 
. 
. 

我想日期前记录当前记录 量1年的量之间的差异,这种差异应该是百分比,如果这种差异应该大于100%,所以这个当前记录的日期,我想。

像例如,目前的战绩是1月 - 2012年和他的量是220 和1年前的记录是1月 - 2011年和他的量为100

int d1 = 220; 
int d2 = 100; 
double percentage = ((220-100)/100)*100 = 120; 

百分比值120%超过100%所以当前记录的日期是我想要的结果。

so我如何得到这个结果查询?

请指导我

+0

您可能想尝试自联接。 – joop 2015-02-24 13:25:48

回答

0

试试这个查询。它可能不是最好的方式,但它的工作原理 -

SELECT a.d_date as adate, a.d_amount as a_am, b.d_date as bdate, b.d_amount as b_am 
FROM daily_records a, daily_records b 
WHERE a.d_amount > b.d_amount 
AND extract(month from a.d_date) = extract(month from b.d_date) 
AND extract(day from a.d_date) = extract(day from b.d_date) 
AND extract(year from a.d_date) - extract(year from b.d_date) = 1;