ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3527111 SQLにて列の値を一まとめにしてカウントできないでしょうか?
質問者:luvelysion 皆様はじめまして。SQL勉強中のものです。
本日はどうしても解決できないことがありますので質問させていただきます。

テーブルAにCONDITIONという列があり、そこには1〜5の値が入ります。
このCONDITION列に1〜5それぞれ何件あるかを取得したいと考えております。単純にcount関数にて1〜5のレコード数を取得するならば以下のSQLで取得可能と思います。
SELECT COUNT(CONDITION) FROM A WHERE CONDITION = '1'
以上をWHERE条件を変えて5回繰り返し。

これだと5回SQLを発行することになります。
これを一回のSQLにて取得できないかと悩んでおります。

皆様、どうかよろしくお願い致します。
困り度:
  • すぐに回答を!
質問投稿日時:
07/11/18 02:16
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.2 これで試してみてください。

SELECT sum(case when CONDITION = '1' then 1 else 0 end) as cnt1,
sum(case when CONDITION = '2' then 1 else 0 end) as cnt2,
sum(case when CONDITION = '3' then 1 else 0 end) as cnt3,
sum(case when CONDITION = '4' then 1 else 0 end) as cnt4,
sum(case when CONDITION = '5' then 1 else 0 end) as cnt5 FROM A
回答者:chibita_papa
種類:回答
どんな人:経験者
自信:自信あり
回答日時:
07/11/18 06:26
この回答へのお礼回答ありがとうございます。早速試してみたいと思います。まだまだ勉強不足ですのでこれからもがんばりたいと思います。

回答良回答10pt

ANo.1 SQL serverは使ったこと無いのでよくわからないんですが
GROUP BY 使えば一発かと思います。


SELECT CONDITION,COUNT(CONDITION) FROM A GROUP BY CONDITION
あれこうだっけかな?検証してないのでちょっとあやふや(^_^;)

[CONDITION],[COUNT(CONDITION)]
1,205
2,102
3,12
4,95
5,123
みたいな感じで取得できるようになる(はず・・・
回答者:inu2
種類:回答
どんな人:一般人
自信:参考意見
回答日時:
07/11/18 02:26
この回答への補足さっそくの回答ありがとうございます。さらにお伺いしますが下記のような形で取得することは可能でしょうか。
[1],[2],[3],[4],[5] ← CONDITION列の値
205,102,12 ,95 ,123 ← それに対する件数

夜分遅くに申し訳ありませんがよろしくお願い致します。
この回答へのお礼まことにありがとうございます。補足のほうに間違って書いてしまったのですが回答いただけるとありがたいです。よろしくお願い致します。