PostgreSQL差异值的差异来自同一个表

时间:2015-02-24 13:10:37

标签: postgresql

我有一个表(daily_records),其中包含许多列(d_date,d_amount等等)。这个表包含太多记录,我在下面给你看一些记录。

------------------------
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%所以这个记录的日期我想要。

例如,当前的记录是2012年1月1日,他的金额是220。 和1年前的记录是2011年1月1日,他的金额是100。

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

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

所以如何才能在查询中得到这个结果?

请指导我

1 个答案:

答案 0 :(得分: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;