2015-09-27 48 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標準語法。 –