2015-09-27 47 views
0

我在雇员薪水的Postgres中有一张表(表名为“Emp_Play”)。表结构如下Postgresql查询日期,排除特定日期

Emp ID | PayDate | Amount | 
0001 | 01/15/15 | 1450.00 | 
0001 | 02/15/15 | 1455.00 | 
0001 | 03/15/15 | 2100.00 | 
0001 | 04/15/15 | 1450.00 | 

每个员工都有这样的记录,3月是“奖金”月份。

我想写一个有效的查询来平均员工薪水金额,但排除“奖金”月份的日期。到目前为止,我想出了:

select avg("Amount") as AVG 
from "Empl_Play" 
where "PayDate" between '01/01/2015' and '01/31/2015' and "PayDate" between '03/01/2015' and '12/31/2015'; 

有没有更简单处理查询,以便在“PayDate”一定条件下可以被排除,如三月的“奖金月”呢?

回答

0

这是做你想做的吗?

select avg(Amount) as AVG 
from Empl_Play 
where extract(month from PayDate) <> 3 and 
     extract(year from PayDate) = 2015; 
+0

或where DATE_PART('month',date)!= 03; – user993553

+0

@ user993553。 。 。这也是有效的。我只是选择了ANSI标准语法。 –