- ベストアンサー
このSQL文を教えてください
単純なSQL文しか作成したことがなく、 いますぐ知りたいので教えてください。 #時間に余裕ができたときに勉強したいと思っています。 項目bの値が重複している場合、そのbの値を出力したいです。 たとえば、 a b ------ 1 20 2 30 3 20 4 10 5 30 6 20 の場合 b count(*) ----------- 20 3 30 2 です。どうぞよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
select b,count(*) from 表 group by b having count(*) > 1
その他の回答 (2)
- takopon
- ベストアンサー率69% (27/39)
#2です。 すみません。 havingがぬけてました。 havingはgroup by後のwhereのようなもので、 違いはhavingではグループ関数がつかえるという程度です。 集計後の結果を絞り込むことが出来ます。 で、#1さんが書いたように 最後にhaving count(*) > 1 でしぼると、件数が2件以上のものだけ、抽出されます。 以上補足でした。
- takopon
- ベストアンサー率69% (27/39)
そのような処理はGroup by 句で処理が可能です。 group by 句はそこに書かれたもので、列を集計します。 select b,count(*) from table名 group by b のようにすれば、質問のような結果を得ることが出来ます。 ちなみに、group by を行っている場合にselectできる項目は、 gourp by 句にかかれている項目もしくはグループ関数(count,MAX,MIN,AVG,SUM など複数の値と単一の値にまとめる効果のある関数)だけです。 それ以外は、gorup by 句にないというようなエラーになります ので注意したほうが良いです。
お礼
「ちなみに・・・」以下参考になりました。 (実はNo1さんのsqlに項目を追加しようとしてエラーをだしていました) ありがとうございます。
お礼
早速の回答ありがとうございました。