2017-05-02 9 views
3

私はこれを行う、グループごとに2つの列を分ける方法はありますか?

SELECT id, gender, count(1) 
FROM class_student 
WHERE id = 1 
GROUP BY gender 

私はこれを取得できますか

id gender count 
-------------------- 
1 female 10 
1 male  5 

を取得しますか?

id female male 
--------------- 
1 10  5 

次のクエリはこれを行う正しい方法ですか?

SELECT 
    id, 
    (select count(1) from class_student 
    where id = 1 AND gender='female') AS female, 
    (select count(1) from class_student 
    where id = 1 AND gender='male') AS male 
FROM class_student 
GROUP BY id 
+0

をhttp://stackoverflow.com/a/12005676/ 5079380 –

答えて

1

あなたはCASES使用することができたときに

SELECT id 
     , sum(case when gender = 'male' then 1 else 0 end) male, 
     , sum(case when gender = 'female' then 1 else 0 end) female 
    FROM class_student 
    WHERE id = 1 
    GROUP BY id 
+1

それは 'GROUP BY id'であってはなりませんか? –

+2

@JinKwon正解が更新されました – scaisEdge

1

あなたはケースで選択を使用することができます。この答えをチェックし

SELECT id, SUM(case when gender = 'male' then 1 else 0 end) male, SUM(case when gender = 'female' then 1 else 0 end) female 
    FROM CLASS_STUDENT 
    WHERE id = 1 
    GROUP BY id; 
関連する問題