2011-11-30 13 views
6

Necesito 3 cuentas diferentes en una sola columna para diferentes condiciones.Cuenta en una sola columna para diferentes condiciones

estructura

Tabla:

interview- 
id-int(10) 
c_id-int(10) 
experience-varchar2(100) 

experiencia tener 3 diferentes valores- 1) positivo 2) negativo 3) neutral

requiero 3 recuentos diferentes de "count_positive", "count_negative" y "count_neutral" para donde el estado de c_id = 10.

Sé que puede obtener por 3 consultas diferentes. ¿Puedo obtener 3 conteos por consulta simple?

+0

¿Puedo obtener una consulta de registro activa para codeigniter? –

Respuesta

7
SELECT 
    SUM(CASE experience 
      WHEN 'positive' THEN 1 
      ELSE 0 
     END) AS CountPositive 
    , SUM(CASE experience 
      WHEN 'negative' THEN 1 
      ELSE 0 
     END) AS CountNegative 
    , SUM(CASE experience 
      WHEN 'neutral' THEN 1 
      ELSE 0 
     END) AS CountNeutral 
FROM Interview 
WHERE c_id = 10 
+1

Weneger: La última condición ELSE está vacía, supongo que debería colocarse allí. –

+1

@yaqubAhmad Buena captura, gracias. Agregué el 0 al último 'CASE' –

+0

¿puedo obtener una consulta de registro activa para codeigniter? –

1
select 'Positive Count' , count(*) 
from interview 
where experience = 'positive' 
UNION 
select 'Negative Count' , count(*) 
from interview 
where experience = 'negative' 
UNION 
select 'Neutral' , count(*) 
from interview 
where experience = 'neutral' 
+1

¿Has visto esta afirmación "Sé que puede obtener por 3 consultas diferentes" en la pregunta? –

1

Ésta es la versión modificada de respuesta Adam Wenger:

SELECT 
    COUNT(CASE experience 
      WHEN 'positive' THEN 1 
      ELSE NULL 
     END) AS CountPositive 
    , COUNT(CASE experience 
      WHEN 'negative' THEN 1 
      ELSE NULL 
     END) AS CountNegative 
    , COUNT(CASE experience 
      WHEN 'neutral' THEN 1 
      ELSE NULL 
     END) AS CountNeutral 
FROM Interview 
WHERE c_id = 10 
+0

¿Puedo obtener una consulta de registro activa para codeigniter? –

+0

Disculpa, ¿puedes dar más detalles sobre eso? –

+0

Tengo solución. Puedes verificar mi solución. –

1

Creo que esto funciona bien:

select 'count of ' + experience, 
     count(experience) 
from interview 
where c_id=10 
group by experience 
+1

'+' no es un operador de concatenación en MySQL. '||' es, pero solo en modo ANSI SQL. – newtover

+0

¿Puedo obtener una consulta de registro activa para codeigniter? –

1

llegué solución para consulta de registro activo en CodeIgniter:

$this->db->select('SUM(CASE experience 
      WHEN "positive" THEN 1 
      ELSE 0 
     END) AS CountPositive 
    , SUM(CASE experience 
      WHEN "negative" THEN 1 
      ELSE 0 
     END) AS CountNegative 
    , SUM(CASE experience 
      WHEN "neutral" THEN 1 
      ELSE 0 
     END) AS CountNeutral'); 

$this->db->where('c_id',10); 
$query=$this->db->get('interview'); 
$result=$query->result(); 

$interview_experience=$result[0]; 
$positive_count=$interview_experience->CountPositive; 
$negative_count=$interview_experience->CountNegative; 
$neutral_count=$interview_experience->CountNeutral; 
Cuestiones relacionadas