- ベストアンサー
group by句について
すいません。教えてください。 emp表からJobのデータが何種類あるか出力したいとき、 ・ select count(distinct job) from emp; はいいのに、 ・ select count(job) from emp group by job; がエラーになる理由を知っている方、教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
group by句はグループ化したい列に適用します。 ご質問の内容でSQL文を作成すると select job,count(*) job_count from emp group by job; となります。 結果は job job_count PRESIDENT 1 MANAGER 10 CLEAK 20 の様になります(数字は適当です)。
その他の回答 (2)
- teppy
- ベストアンサー率50% (9/18)
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文が正しいです
お礼
よくわかりました。 ありがとうございました。
- teppy
- ベストアンサー率50% (9/18)
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);
お礼
なるほど、group by句で指定した内容と、select句で選択した 内容が同じでないからエラーになるんですね。 よくわかりました。ありがとうございました。