2015-06-22 85 views
0

改變計數值所以這是我在數據庫表:
員x有這樣的工作結果BETWEEN '2015-06-01' AND '2015-06-06'
enter image description herePostgreSQL的:根據病情

我想要做的是計算工作的天數,但我的情況是,如果(nb_heures + nb_heures_s) > 4我數1天,但如果(nb_heures + nb_heures_s) <= 4我數0.5天。
所以結果我必須從這個表5.5個工作日內得到,而不是6
我嘗試這樣做查詢,但它不工作得好:

SELECT 
    count(CASE WHEN (nb_heures + nb_heures_s) > 4 THEN 1 END) as full_day_work, 
    count(CASE WHEN (nb_heures + nb_heures_s) <= 4 THEN 0.5 END) as half_day_work 
FROM pointage_full pf 
WHERE date_pointage BETWEEN '2015-06-01' AND '2015-06-06' 
AND pf.id_salarie = 5 

我怎樣才能達到我的OBJECTIF?

回答

0

COUNT(expr)總是返回bigint,因爲它只是返回expr不爲NULL的行數。

您可以使用SUM代替:

SELECT SUM(CASE WHEN (nb_heures + nb_heures_s) > 4 THEN 1 ELSE 0.5 END) as number_of_days 
FROM pointage_full pf 
WHERE date_pointage BETWEEN '2015-06-01' AND '2015-06-06'; 
+0

這幫助,謝謝。 – SlimenTN