• ベストアンサー

このSQL文を教えてください

単純なSQL文しか作成したことがなく、 いますぐ知りたいので教えてください。 #時間に余裕ができたときに勉強したいと思っています。 項目bの値が重複している場合、そのbの値を出力したいです。 たとえば、 a b ------ 1 20 2 30 3 20 4 10 5 30 6 20 の場合 b count(*) ----------- 20 3 30 2 です。どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

select b,count(*) from 表 group by b having count(*) > 1

yumi-mika
質問者

お礼

早速の回答ありがとうございました。

その他の回答 (2)

  • takopon
  • ベストアンサー率69% (27/39)
回答No.3

#2です。 すみません。 havingがぬけてました。 havingはgroup by後のwhereのようなもので、 違いはhavingではグループ関数がつかえるという程度です。 集計後の結果を絞り込むことが出来ます。 で、#1さんが書いたように 最後にhaving count(*) > 1 でしぼると、件数が2件以上のものだけ、抽出されます。 以上補足でした。

  • takopon
  • ベストアンサー率69% (27/39)
回答No.2

そのような処理はGroup by 句で処理が可能です。 group by 句はそこに書かれたもので、列を集計します。 select b,count(*) from table名 group by b のようにすれば、質問のような結果を得ることが出来ます。 ちなみに、group by を行っている場合にselectできる項目は、 gourp by 句にかかれている項目もしくはグループ関数(count,MAX,MIN,AVG,SUM など複数の値と単一の値にまとめる効果のある関数)だけです。 それ以外は、gorup by 句にないというようなエラーになります ので注意したほうが良いです。

yumi-mika
質問者

お礼

「ちなみに・・・」以下参考になりました。 (実はNo1さんのsqlに項目を追加しようとしてエラーをだしていました) ありがとうございます。

関連するQ&A