2012-08-27 19 views
5

devo una query mysql:Come sommare i record di una singola colonna con diverse possibilità?

SELECT count(*) as `present_days` 
FROM tbl_intime_status 
WHERE employee_status = 'Out' and 
     present_status = 'Full Day' and 
     date LIKE '%/"+month2+"/"+year1+"' and 
     employee_id="+ EmpId+ 

Da questa query sto ottenendo alcuna. di Full Day presente.

Ho present_status= 'Half Day' & present_status = 'Full Day' nei miei record di database.

Come contare 'Full Day' + 'Half Day'?

risposta

4

Se vuoi separare i conteggi puoi farlo

SELECT present_status, count(*) as `present_days` 
FROM tbl_intime_status 
WHERE employee_status = 'Out' and 
     present_status IN ('Full Day','Half Day') 
     date LIKE '%/"+month2+"/"+year1+"' and 
     employee_id="+ EmpId+ 
GROUP BY present_status 

Se si desidera che il totale sia di fare questo

SELECT count(*) as `present_days` 
FROM tbl_intime_status 
WHERE employee_status = 'Out' and 
     present_status IN ('Full Day','Half Day') 
     date LIKE '%/"+month2+"/"+year1+"' and 
     employee_id="+ EmpId+ 
+0

@ hol: grazie..Il suo funzionamento – Harshali

1

Basta aggiungere al tuo clausola in cui, sia con IN:

... 
WHERE present_status IN ('Full Day','Half Day') 
... 

o con OR:

... 
WHERE (present_status = 'Full Day' OR present_status = 'Half Day') 
... 
1

E 'questo quello che stai cercando:

SELECT count(*) as present_days 
FROM tbl_intime_status 
WHERE employee_status = 'Out' 
and present_status IN ('Full Day', 'Half Day') 
and date LIKE '%/"+month2+"/"+year1+"' 
and employee_id="+ EmpId 
3

tentativo, don'tforget per sfuggire alla colonna di date dal momento che è una parola riservata.

SELECT present_status, count(*) as `present_days` 
FROM tbl_intime_status 
WHERE employee_status = 'Out' and 
     present_status IN ('Full Day','Half Day') 
     `date` LIKE '%/"+month2+"/"+year1+"' and 
     employee_id = " + EmpId + " 
GROUP BY present_status 
2

voglio provare questo per vedere se funziona:

... 

present_status in ('Full Day', 'Half Day') 

... 

La grammatica può essere trovato qui: SQL IN Operator.

0

Questo vi darà dividere da tutti i tipi di conti in un unico fila:

SELECT SUM(IF(present_status = 'Full Day', 1, 0)) AS full_present_days, 
     SUM(IF(present_status = 'Half Day', 1, 0)) AS half_present_days, 
     COUNT(*) AS present_days 
FROM tbl_intime_status 
WHERE employee_status = 'Out' and 
     present_status IN('Full Day', 'Half Day') and 
     date LIKE '%/"+month2+"/"+year1+"' and 
     employee_id="+ EmpId+; 
0
SELECT SUM(
    CASE present_status 
    WHEN 'Full Day' THEN 1 
    WHEN 'Half Day' THEN 0.5 
    END 
) as `present_days` 
FROM tbl_intime_status WHERE employee_status = 'Out' 

Spero che questa sia la query che stai cercando.

Problemi correlati