• ベストアンサー

group by句について

すいません。教えてください。 emp表からJobのデータが何種類あるか出力したいとき、 ・ select count(distinct job) from emp; はいいのに、 ・ select count(job) from emp group by job; がエラーになる理由を知っている方、教えてください。

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

  • ベストアンサー
  • sgh
  • ベストアンサー率61% (75/121)
回答No.1

group by句はグループ化したい列に適用します。 ご質問の内容でSQL文を作成すると select job,count(*) job_count from emp group by job; となります。 結果は job     job_count PRESIDENT      1 MANAGER       10 CLEAK        20 の様になります(数字は適当です)。

hiromaru
質問者

お礼

なるほど、group by句で指定した内容と、select句で選択した 内容が同じでないからエラーになるんですね。 よくわかりました。ありがとうございました。

その他の回答 (2)

  • teppy
  • ベストアンサー率50% (9/18)
回答No.3

No.2のteppyです すいません間違えました >select job, count(job) from emp group by job, count(job); ↓ select job, count(job) from emp group by job; No.1のsghさんのSQL文が正しいです

hiromaru
質問者

お礼

よくわかりました。 ありがとうございました。

  • teppy
  • ベストアンサー率50% (9/18)
回答No.2

group by句は出力したい項目をグループ化するところです 出力されない項目をグループ化することは出来ませんので、エラーがでます >select count(job) from emp group by job; ↓ select count(job) from emp group by count(job); とすれば、正常に出力されるでしょう >emp表からJobのデータが何種類あるか出力したいとき、 だったら、下記のほうが宜しいかと... select job, count(job) from emp group by job, count(job);

関連するQ&A