2011-11-30 14 views
6

Ho bisogno di 3 diversi conteggi su singola colonna per condizioni diverse.Conteggi su singola colonna per condizioni diverse

struttura

Tabella:

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

esperienza avere 3 differenti VALORI 1) positivo 2) negativo 3) neutro

richiedo 3 differenti conteggi di "count_positive", "count_negative" e "count_neutral" per dove condizione di c_id = 10.

So che può ottenere da 3 query diverse. Posso ottenere 3 conteggi per singola query?

+0

È possibile ottenere una query di registrazione attiva per il codeigniter? –

risposta

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: l'ultima condizione ELSE è vuota, 0 dovrebbe essere posizionato lì, credo. –

+1

@yaqubAhmad Buona cattura, grazie. Ho aggiunto lo 0 all'ultimo 'CASE' –

+0

posso ottenere una query record attiva per 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

Hai visto questa affermazione "So che può ottenere da 3 diverse query" nella domanda? –

1

Questa è la versione modificata di Adam Wenger risposta:

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

È possibile ottenere una query record attiva per codeigniter? –

+0

Mi dispiace, puoi approfondire? –

+0

Ho una soluzione. Puoi controllare la mia soluzione. –

1

Penso che questo funziona bene:

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

'+' non è un operatore di concatenazione in MySQL. '||' è, ma solo in modalità ANSI SQL. – newtover

+0

Posso ottenere una query record attiva per il codeigniter? –

1

ho ottenuto la soluzione per la query record attivo in 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; 
Problemi correlati