ここから本文です

sqlの[GROUP BY]の使いどころ(なぜ使う必要があるのか)がいまひとつわかりません...

hak********さん

2010/9/2223:37:12

sqlの[GROUP BY]の使いどころ(なぜ使う必要があるのか)がいまひとつわかりません(T-T)

何方か教えてくださいm(_ _)m

閲覧数:
896
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

k15********さん

2010/9/2323:23:35

以下のような名簿テーブルがあるとします。

[名前] [性別] [年齢]
鈴木 男 20
佐藤 男 30
鈴木 女 15
中山 女 25

平均年齢を求めたい場合、以下のようなSQLを使用します。
SELECT AVG(年齢) FROM 名簿
この場合、性別に関係なく全員の年齢の平均が計算されます。
(結果)
22.5 ( (20 + 30 + 15 + 25) / 4)

男女別の平均年齢を求めたい場合は、GROUP BYを使うと簡単に計算できます。
以下のSQLでは、性別ごとに年齢の平均が計算されます。
SELECT AVG(年齢) FROM 名簿 GROUP BY 性別
(結果)
男 25 ( (20 + 30) / 2 )
女 20 ( (15 + 25) / 2 )

以下のようにしたらどうなると思いますか?
SELECT AVG(年齢) FROM 名簿 GROUP BY 名前
(結果)
鈴木 17.5 ( (20 + 15) / 2)
佐藤 30
中山 25
今度は性別ではなく、名前ごとに年齢の平均が計算されます。
佐藤と中山は1人しかいないのでそのまま、鈴木は2人いるので、2人の鈴木の平均年齢が計算されます。
ORDER BYに性別を指定していないので、ここでは性別は無視されます。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

chu********さん

2010/9/2319:15:21

会員毎、日付毎などなど、GROUP BYを使わなければ、何度もクエリを投げたり、クエリの結果をアプリ側で集計したりと、非常に面倒な操作が必要で、性能面でも大損することになります。

GROUP BYを指定しないクエリは、「検索対象全体を一つのグループにしている」と考えれば分かりやすいでしょう。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる