2011-11-30 16 views
6

Wymagam 3 różnych wartości dla pojedynczej kolumny dla różnych warunków.Liczba pojedynczej kolumny dla różnych warunków

struktura

Tabela:

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

doświadczenie 3 różne values- 1) dodatnią 2) negatywna 3) neutralna

I wymagają 3 różne zliczeń "count_positive", "i" count_negative "count_neutral" dla warunku c_id = 10.

Wiem, że można uzyskać 3 różne zapytania. Czy mogę uzyskać 3 liczenia według pojedynczego zapytania?

+0

Czy mogę uzyskać aktywne zapytanie dotyczące rekordu kodu? –

Odpowiedz

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: Ostatni warunek ELSE jest pusty, należy umieścić 0 w tym miejscu. –

+1

@yaqubAhmad Dobry połów, dziękuję. Dodałem 0 do ostatniego "CASE" –

+0

czy mogę uzyskać aktywne zapytanie rekordu o 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

Czy widzisz w tym pytaniu stwierdzenie "Wiem, że można uzyskać dzięki 3 różnym pytaniom"? –

1

Jest to zmodyfikowana wersja Adam Wenger odpowiedź:

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

Czy mogę uzyskać aktywne zapytanie dotyczące rekordu kodu? –

+0

Przepraszam, czy możesz to rozwinąć? –

+0

Mam rozwiązanie. Możesz sprawdzić moje rozwiązanie. –

1

myślę, że to działa dobrze:

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

'+' nie jest operatorem konkatenacji w MySQL. '||' jest, ale tylko w trybie ANSI SQL. – newtover

+0

Czy mogę uzyskać aktywne zapytanie dotyczące rekordu kodu? –

1

Mam rozwiązanie dla aktywnych zapytania rekord w 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; 
Powiązane problemy