2012-08-27 15 views
5

que tienen una consulta de MySQL:¿Cómo sumar registros de una sola columna con diferentes posibilidades?

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+ 

De esta consulta que estoy recibiendo ninguna. de Full Day presente.

Tengo present_status= 'Half Day' & present_status = 'Full Day' en los registros de mi base de datos.

¿Cómo contar 'Día completo' + 'Medio día'?

Respuesta

4

Si desea los recuentos por separado, puede hacer esto

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 

Si desea que el total de ambos hacen esto

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: thanks..Its working – Harshali

1

Sólo tiene que añadir a su cláusula where, ya sea con IN:

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

o con OR:

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

¿Es esto lo que busca:

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

intento, don'tforget para escapar de la columna de la date ya que es una palabra reservada.

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

quiero probar esto para ver si funciona:

... 

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

... 

La gramática se puede encontrar aquí: SQL IN Operator.

0

Esto le dará a usted parte de todo tipo de recuentos en una 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' 

Espero que esta es la consulta que está buscando.

Cuestiones relacionadas