• ベストアンサー

10歳単位での GROUP BY

ACCESS2000を使用しています。 従業員データというテーブルの情報を元に、年代別(10歳ごと)の円グラフを作成したいと思っています。 (・20~29歳・30~39歳・40~49歳・50歳以上) どのようにSQL文を書けばいいのでしょうか。 よろしくお願いいたします。 ※今回のテーブルには生年月日ではなく、年齢の数字が直接入っています。 もし生年月日から作成するにはBETWEEN関数と組合せればいいのでしょうか? 2つも質問してすいません。

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

  • ベストアンサー
  • maro200
  • ベストアンサー率45% (15/33)
回答No.2

年代の計算は、年齢\10で求まります。 SQLの書き方もいくつかあると思いますが、 SELECT IIf(年齢\10>=5,5,年齢\10) AS 年代 FROM 従業員データ GROUP BY IIf(年齢>=5,5,年齢\10); もしくは、 select 年代 from (SELECT IIf(年齢\10>=5,5,年齢\10) AS 年代 FROM 従業員データ) GROUP BY 年代; 生年月日の求め方は、下の方のを参照してみてください。

amateur3
質問者

お礼

お礼が遅くない申し訳ありませんでした。 うまくいきました。 ありがとうございました。

その他の回答 (1)

回答No.1

アクセス2002で試してます。 まぁ私はSQLはわかりませんが笑 年代別のわけ方だけでもと思いまして・・・ 年代の計算は年齢を10で割ってINT関数で整数部分を抜き出し10倍すれば年代になります。 生年月日から求める場合は =int(int(DateDiff("d",[生年月日]-1,Date())/365.25)/10)*10 となります。 これを元にグラフを作成すればできるようなきがしますが・・・参考になればいいです

amateur3
質問者

補足

早速の回答ありがとうございます。 INTで処理する方法ですと、 ・20~29歳・30~39歳・40~49歳はいいのですが、 ・50歳以上というグループが出来ません。 50歳以上は人数が少ないのでグループ化させたいのです。 INTの応用で出来るかと思ったのですが方法が浮かびませんでした。

関連するQ&A

  • Access2000 フォームで計算したものをテーブルに反映するには?

    上司に頼まれ、Access2000で従業員データを作成しました。 そこで、フォームにおいて年齢を計算するために 「生年月日」を入力する欄と、「年齢」を表示する欄を作成して コントロールソースにも入れて、うまく表示できたのですが、 その年齢の数字が、テーブルやクエリで見ると表示されていません。 他の何かのデータを見た時にはできていたはず。。。 表示する為の手順が足りないのでしょうが、初心者ゆえにまったくしてわかりません、教えて下さい。 どうかよろしくお願いいたします。

  • HTML,JavaScript,accessについて...

    HTML,JavaScript,accessについて... こんにちは。趣味でJavaScriptをしている者です。 さっそくですが、質問させていただきます。 html1とhtml2があるとします。 html1に記述してあるJavaScriptでaccessに接続しているときに、 html1のフォームのボタンを押したときに、テキストボックスの入力内容と、 accessにあらかじめ作成しておいたテーブルのレコードに格納されている 文字列データが一致した場合に、html2に移動できるようにしたいのですが、 そのためには、JavaScriptの関数から、accessへSQL文を送ると思うのですが、 どのようなSQL文を作成すればよいのでしょうか? なにぶん、しろうとですので、説明がわかりにくいかと思いますが、 もしよろしければ、解説していただけないでしょうか。 よろしくお願いします。

  • SQLサーバーは、他のデータベーステーブルをリンクとして表示させたい

    SQLサーバーのデータをアクセスへはテーブルリンクで表示させることができますが(元データのテーブルはSQLサーバー) アクセスにあるテーブルをSQLサーバーへリンクすることはできないのでしょうか? (アクセス2003、sql2005です) よろしくお願いします。

  • SQL文 特定のレコードを抽出したい

    以下のようなテーブルAがあったとします。 年月日,項目B ---------------------- 20080101 100 20080102 100 20080103 200 20080104 400 20080105 400 20080106 200 SQL文にて、データの抽出を行いたいのですが、 抽出したいのは、データに変更があった年月日と項目Bの値です。 年月日,項目B ---------------------- 20080101 100 20080103 200 20080104 400 20080106 200 前の年月日と比較し、項目Bに違いがあった場合のデータだけ抽出したいのですが、SQL文で行うことは可能でしょうか?? 環境は、SQL Server 2005 です。

  • GROUP BYについて

    お世話になっております。GROUP BY に関してつまずいています。 色々と調べているのですが、解決できないため質問させて下さい。 まず下記のような履歴テーブルがあります。 rireki_member_noとは投稿者のIDであり、title1、title2に登録された日付データ(date型)は その投稿者が投稿した日付が登録されています。(title1だけの場合もあればtitle2だけの場合もあり、両方の場合もあります) rirekiテーブル rireki_no rireki_member_no  title1     title2  1       2       2014-09-12   2       1                 2014-09-12  3       3       2014-09-14   2014-09-14  4       2       2014-09-18  5       1                 2014-09-19 また、下記は投稿者のテーブルであり、rireki_member_noと、member_noは紐付いたものとなります。 memberテーブル memner_no  member_name  1       佐藤  2       吉田  3       佐々木 そこで今回行いたいのは、タイトルを指定し、且つ日付を範囲指定した時、その会員の名前、そして投稿した日付を一覧で表示したいと考えていますが、その際のSQL文が分からず困っている状況です。 イメージ的には、 title2を指定し、2014-9-13から20149-19と範囲指定した場合 3  佐々木  2014-09-14 2  吉田   2014-09-19 といった結果を求めたいと考えています。 お恥ずかしいとは思いますが、実は昨夜からずっと悩んでいたりして・・・ rirekiテーブル単体であれば、 http://norm-nois.com/blog/archives/1293 で似たような内容で紹介されているのですが、今回のようにJOINが絡むと難易度が高くなっている状況です。 お忙しいなか恐縮ですが、お知恵を頂戴出来れば幸いです。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • InputBoxを抽出条件にしたSQL文

    MicroSoftのAccessを使用してSQL文を作成しています。 VisualBasicに用意されているInputBox関数を利用して、 それを抽出条件として当てはめたいのですが、どうも 上手くいきません。 詳細を書きますと、InputBox関数で4桁の数字を入力 します。それは年月を表します。例えば平成14年11月なら 1411と入力します。 テーブルの中に「扱月」という列があり、それに合致 しているものを抽出したいのですが、変数に入ってく れません。 InputBoxで入れた数の変数はresという名の中に入れて いるのですが、それをSQL文内で使用しても、どうも 望む数字が入っていないようなのです。 クォーテーションで囲んでみてもだめでした。 どのようにすれば宜しいのでしょうか。

  • オラクルのテーブルについて

    質問があります。 SQL文で指定したテーブル(test_tbl)のCREATEされた 日時とかわかるようなものはないでしょうか? たとえばテーブル (table_a, table_b, teble_c:全て同じ構成だが格納データが異なる)が あって一番最後に作成されたテーブルに アクセスしたい場合なんですが どのようなSQL文になるでしょうか? またそんな事はSQLではかけないような場合、 どのようにすればテーブルのクリエート日付を取得 することができるでしょうか? 宜しくお願いいたします。

  • accessでcommitができますか?

    accessで複数のテーブルから1つのテーブルに書き込みをしています。VBAでSQL文を作成しDoCmd.RunSQLでinsertを実行しています。データが多いと遅くなるようです。Commitとか実行できるのでしょうか?そうすれば早くなりますか?ご指導のほどお願いいたします。

  • Accessの関数について

    Accessのフォーム作成から氏名、生年月日、年齢といったかんじでデータを作成し、生年月日を入力したら年齢も自動的に表示されるようにしたいのですが、関数の定義がわからないので教えてもらえないでしょうか。 フォームのデザインビューからプロパティ→年齢のテキストボックスを指定し、テキストボックス年齢のプロパティが開かれます。コントロールソースの項目からビルドボタンをクリックすると、式ビルダが開かれます。生年月日の表示方式は 生年月日 1999/09/09 といった表示方法をとっています。Excelだと、datedif関数で、 datedif("生年月日","2002/10/1","y")で年齢を算出できたので、もしかしたらAccessでも定義できるんではないかと思いまして質問いたしました。

  • GROUP BY , MAX の使用法に関して

    いつもお世話になります。 GROUP BY , MAX の使用法に関して質問です。 USERCDとKYOUTUNOでグルーピングをしてSEQの最大値のレコードを抽出しようとしています。 以下のようなSQL文の場合ですとBIKOUがないレコードを抽出する事が出来るかと思います。 【select USERCD , KYOUTUNO , MAX(SEQ) from テーブル1 group by USERCD , KYOUTUNO】 そこで、BIKOU も同時に抽出したいのですが、BIKOUを選択列に入れると「GROUP BYの式ではありません。」のエラーが出ます。 「そりゃそうだ」だと思うのですが、どうのようにすればSQL文を作れば結果のようなレコードを抽出出来るのでしょうか? よろしくお願いします。 ◆テーブル1のデータ USERCD KYOUTUNO SEQ BIKOU ------------------------------------- 100 100 1 あああああ 100 100 2 いいいいい 100 100 3 あいうえお 222 200 1 AAAAA 222 200 2 AAAAAA 3333 100 1 うううううう 44444 100 1 ううううう 44444 100 2 えええ ◆結果 USERCD KYOUTUNO SEQ BIKOU ------------------------------------- 100 100 3 あいうえお 222 200 2 AAAAAA 3333 100 1 うううううう 44444 100 2 えええ ■ORACLEのバージョン  Oracle9i

専門家に質問してみよう