ここから本文です

個々の年齢と、その身長がフィールドとして記録されている時、

アバター

ID非公開さん

2019/2/204:25:27

個々の年齢と、その身長がフィールドとして記録されている時、

20-30までの年齢での平均身長を求めるにはsqlでどのように書けば良いでしょうか?

以下のような形など、色々と試してはみたのですが、自分では難しく思ったようにいきません。


select Avg(身長)
from テーブル
group by 年齢
having 年齢>20 and
年齢<30

閲覧数:
15
回答数:
2
お礼:
50枚

違反報告

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

プロフィール画像

カテゴリマスター

hat********さん

2019/2/208:25:53

下記のようにwhere句を使ってください。
(where句の位置に注意)

select Avg(身長)
from テーブル
where 年齢>20 and 年齢<30
group by 年齢;


where句は、抽出してから、それを集計します。
having句は、集計結果を対象に抽出します。

  • hat********さん

    2019/2/208:27:22

    あっ、間違えた!
    SQLを下記に訂正

    select Avg(身長)
    from テーブル
    where 年齢>20 and 年齢<30;


    group by は不要でした。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2019/2/2 13:14:00

お礼が遅くなってしまい、申し訳ありません。
補足で書いてくださった通りにやったら無事にできました。
簡単に見えるのに、私には思いつかず・・使いこなすのは難しいです・・汗

お二人の回答とも、それぞれすごく参考になりました。
本当にありがとうございます。

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

1〜1件/1件中

プロフィール画像

カテゴリマスター

nora1962jpさん

2019/2/212:48:49

> 20-30までの年齢

20と30の取扱いによります。

20と30を含めたいなら

where 年齢 >=20 and 年齢 <=30
または
where 年齢 between 20 and 30

20代(20から29)なら

where 年齢 >=20 and 年齢 <= 29
または
where 年齢 >=20 and 年齢 < 30

どちらも含めたくないなら

where 年齢 >20 and 年齢 < 30

どれについても
select avg(身長) as 平均身長

は変わりませんが。

ただ、年代別の平均身長を求めたい
0-9
10-19
20-29
.
.
.

というのはあると思いますが。

select int( 年齢 / 10 ) * 10 as 年代, avg(身長) as 平均身長
from テーブル
group by int( 年齢 / 10 ) * 10

はそれなりに使います。

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

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

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

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

閉じる

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

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

閉じる