トップ > Access2007目次 > クエリを使って本格的な集計処理をしよう
1)2)3)4)5)6)7)

クエリを使って本格的な集計処理をしよう

サブフォームで各学生のテストの平均点を知ることはできました。
ひとりひとりのデータを見るときは十分ですが、全員の点数の総括をしたいときもありますよね。
そこで、「成績テーブル」に貯まったデータを使ってクエリを作り、学生全体の状況を分析してみましょう。

1クエリを作成する

操作中クエリを新規に作成します。
えっ、どうやるんだっけ、という方は、まず右図を参考にしてください。
ちっさい図にしてやるっ。思い出せ、思い出すんだ!
図1:クエリ、クエリ、クエリの作成

 

操作中「成績テーブル」を選択します。
ダブルクリックして「成績テーブル」を選びましょう。

焦って何回もダブルクリックしないようにしてくださいよ。過ぎたるは及ばざるが如しです。クエリのデザイン画面に「成績テーブル」が表示されていればOK。
選び終わったら、「テーブルの表示」ウィンドウは閉じます。
図2:選んで閉じて

 

操作中フィールドは3つ選びます。
選ぶフィールドは「実施日」と「教科番号」と「点数」です。
上から下へ、フィールド名をドラッグすればOK。
図3:上から下へドラッグしたりするんだっけ

 

操作中リボンの中の「集計」ボタンをクリックして、集計行を表示させます。
集計方法は以下のように変更しましょう。

「実施日」: グループ化
「教科番号」: グループ化
「点数」: 平均
図4:実施日ごと教科ごとの平均点を出すクエリになるのだ

 

操作中結果を表示してみましょう。左上のボタンでクエリを実行して結果を表示することができましたよね。

これで、6人の学生さんの、実施日別教科別の平均点を知ることができます。
平均ですので、割り切れずに桁あふれしているところもあるのではないでしょうか。その場合は、列幅を変えればよかったですよね。 調整してみてください。
ちょっと広げれば、表示されるはずです。
図5:割り切れない・・・

 

点数、桁あふれしているものも、表示されるようになりました?

これで、実施日別教科別の平均点がわかるわけなんですが、単に教科別の平均点を知りたい、という場合は、「実施日」を削除してしまえばOKです。
デザインビューに戻って、このクエリを変形させましょう。
図6:割れない割れない

 

操作中デザインビューに戻って・・・戻り方は(青い三角定規)・・・

「実施日」列をこのクエリからはずす場合は、いろいろやり方はあるんですが、とりあえずスタンダードな方法を・・・。簡単に言うと列を削除します。
まず、右図のように、「実施日」列の上の部分にマウスポインタを合わせます。
ポインタが下向きの矢印になるんで、その形を確認してください。そしたらそのままクリックします。
図7:そこでクリックだ!

 

操作中エイッとクリックすると、「実施日」列がマックロになります。まあ、黙ってクリックしてもなるんですが、これで、「列を選択した」って状態になります。下矢印マウスポインタの形がポイントですね。

で、キーボードのDeleteキーで、ばっさり。
図8:黒く塗れ!

 

操作中2列になりましたね。
これで、「過去全てのテストの教科ごとの平均点」というクエリに変わりました。
どのフィールドを選ぶかによって、どういう集計結果が得られるかが変わるわけですね。
図9:消しちゃった

 

操作中もう一度、結果を表示してみましょう。
どの教科の平均点が一番いいかというと・・・。
算数が一番いいんですね。意外だな。一番悪いのは社会か・・・。
ウチの学生、みんな自分の出身地のことしか興味持たないもんなぁ・・・。

それにしても、割り切れないと、読み取りにくいなぁ。
53.58333333...って・・・。
図10:小数点を探さなあかんな

 

2クエリのプロパティ(書式設定)

操作中デザイン画面に戻って、「点数」の小数点以下の桁を調整してみましょう。

右図を参考にしていただいて、リボンの中にある「プロパティシート」をクリックし、このクエリのプロパティシートを出しましょう。

クエリにもあるんですよ。プロパティ。
ちょっとですけどね。

小数点以下の桁数や、数値の表示書式の調整方法はいくつかあるんですが、今回はいろいろ応用が利く方法をお話します。
図11:プロパティ、プロパティ

 

操作中書式プロパティに、以下のように入力します。
全部半角で、

#,###.00

シャープカンマシャープシャープシャープドットゼロゼロです。全部半角ですよ。 これで、3桁ずつカンマ区切りで、小数点以下2桁までを表示するようになります。
まあ、千を超えることはないと思いますので、#.00 でもいいかもわかりませんが・・・。
図12:書式の設定

 

操作中もう一度、結果を表示してみましょう。
ほーら、小数点以下2桁までの表示になったでしょ。
桁が揃うので、この方が数値の比較がしやすくなると思うんですよね。

小数点以下2桁より後ろの端数は丸められてます。
小数点以下が要らない、という場合は、

#,##0
にしてみてください。
図13:いい感じ

 

3テーブルの追加

もうちょっとだけこのクエリを変形させてみましょう。
クエリの操作の練習だと思って挑戦してみてください。

例えば、「教科ごとじゃなくて学生ごとの平均点はどんなかチョット見ておきたいな」なんてことになったら、どうします?「学籍番号」ごとに平均を出せばいいんですよね。
クエリの結果の列数は変わらないわけですから、「教科番号」を「学籍番号」に変更しちゃいましょうか。

操作中右図を参考にしていただきながら、一列目のフィールドを「教科番号」から「学籍番号」に変更します。
ねー、簡単でしょ?




図14:一覧から選ぶんだよ

 

操作中結果を表示してみましょう。学籍番号ごとの平均点が出ましたね。「点数」の書式はさっき設定したので、小数点2桁までの表示になってますね。

うーん、でも、学籍番号だけじゃ、誰だかすぐにはわからないなぁ。
やっぱりお名前を表示したいですね。
図15:点数はみんなどっこいどっこいだな

 

操作中デザイン画面に戻って、リボンの中から「テーブルの表示」をクリックします。

「学生マスター」をこのクエリに追加して、学生さんたちの名前が表示されるようにしましょう。
図16:テーブルの表示ふたたび

 

操作中「テーブルの表示」ウィンドウが表示されます。
テーブルはクエリを作りながら、後から追加することもできるんですよ。

中から「学生マスター」をダブルクリックします。
テーブルが追加されたことを確認したら、「テーブルの表示」ウィンドウは閉じます。
図17:「学生マスター」を追加するぞ。

 

このふたつのテーブル、以前、サブフォームを作るために「リレーションシップ」を作成しましたよね。なので、こうしてクエリを作ると、結合線が自動的に表示されるんです。ひと手間省けましたねー。

操作中「学生マスター」から、「名前」フィールドを追加します。

右図の緑色の矢印線のようにドラッグして、「学籍番号」と「点数」の間に表示されるようにしましょう。
図18:フィールドを追加するんだ。ドラッグだ

 

操作中集計方法は「グループ化」のままでOKです。
では、結果を表示して確認してみましょう。
図19:これでいいかしら

 

学籍番号と並んで名前も表示され、誰の平均点だかすぐにわかるようになりました。
図20:織田くんが一番か。伊達くんがビリか。

 

4クエリを再表示

じゃあ今度は、どの教科の点数でもかまわないので、「実施日」ごとの平均点を出してみましょうか。
時期とか季節とか天候とか、そういう影響でテストの出来が左右されるなんてことは、あるんでしょうか??

操作中もう、細かいこと申し上げなくてもいいですよね。「実施日」をグループ化し、「点数」で平均を取りますよ。
図21:図の説明。

 

操作中結果を表示してみましょう・・・・・あ、あれ? テストはまだ2回しか実施してないんですが、なんか、3行になってる・・・。皆さんの画面はどうですか? え?ちゃんと2行で表示されてる?

ではなぜ、右の図は3行になっているのか、それについてお話いたしましょう。
図22:図の説明。

 

実は、一番最初にためし入力をするとき、1月1日って入力したレコードが1件だけあったんですよね。私の場合は、「実施日」で集計すると、日付が3種類あることになり、結果、3行になっちゃうんです。

クエリは、テーブルの中のデータを指示されたとおりに出力するクエリです。テーブルのデータが間違っていたり正しくなかったりすれば(同じか)、当然のことながら、クエリの結果にも影響が出ます。
と、いうことを頭においていただいて、以下は、参考までに読んでおいてください。正しく”1月2日”と入力いただいている場合は、以下のような作業は必要ありませんし、クエリも正しく2回のテストの平均点を2行に分けて表示しているはずですからね。

でも、私は、入力し間違えたデータを直さなきゃ・・・。ぐすんぐすん(嘘泣き)
では、私は、テーブルのデータを修正する作業に入ります。皆さんはささっと読み飛ばしていただいて、「5.保存しない」まで進んでください。
■「成績テーブル」を開きます。ナビゲーションウィンドウからダブルクリックすればOKですよ。

あ、さっそく見つけた。
あったあった。
図23:間違い入力発見

 

■「実施日」を入力しなおします。 入力しなおしたら、「成績テーブル」を閉じましょう。
図24:左端のエンピツマークにもちょっとだけ注目だ

 

実は、閉じなくてもいいんですが、レコードの右端にエンピツマークがあるうちは、まだ2009/01/01のままなんですよ。
テーブルを閉じればエンピツマーク中の(編集中)レコードも確実に保存されるんで、テーブルのデータをデータシートビューで書き換えたら閉じるクセをつけておくと、 中途半端な状態を回避できるのでチョイミスを減らすことができるんです。
閉じないでこのままクエリの作業に戻りたいときは、カーソルを他のレコードに移動してエンピツマークを消してからにしましょう。
えーと・・・あれ?クエリに戻ってまいりましたが、3行のままですね・・・。
そうなんです。クエリってのは、結果を表示しようとしたとき(実行したとき)のテーブルのデータを表示するんです。なので、クエリ開いたまま基のテーブルのデータを書き換えても、開きっぱなしのクエリには反映されないんです。
こういう場合は、いったん閉じるなりして、もう一度表示しなおす必要があるんですよ。
図25:なによっ変わってないじゃないのっ!!

 

■今回は、まだクエリを保存していないし、このクエリを保存して残すかどうかも決めてないので、閉じずに、「デザイン画面を表示して」「すぐ結果を表示する」という操作をしましょう。これでも、クエリを再表示することになるんですよ。
図26:ささっと裏返す感じで

 

■2行になりましたよー。やったー。
これで、2回のテストそれぞれの平均点が出ました。

1月のほうが10点以上も平均点が高いですね。1月末から風邪が流行ってたからみんな体調を崩していたのかもしれないなぁ。
図27:おっ、いい感じだ。

 

5保存しない

クエリを通して、いろいろなことがわかりましたね。
このようにして、あれこれ現状分析するためにクエリを活用することもあるんです。こういう場合は、保存せずに閉じる場合もあるんですよ。その都度、知りたい情報が変わる可能性もありますし、いちいち 名前をつけて保存すると、データベースの中がクエリだらけになってしまうこともあるんで、都度作る、という人も多いんですよ。
「えっ、記念に残しておきたい・・・」という方は、何か適当な名前をつけて保存してください。
操作中クエリを閉じます。閉じるときに、名前をつけていなかったり、最後に保存してから何かしら変更をした場合は、確認メッセージが表示されます。
「いいえ」ボタンをクリックすると、このクエリは破棄されます。
図28:保存しないってのもアリだな

 

うーん、しかし・・・少々課題が残りました。
今回はたまたま、日付の入力間違いでしたが、良く考えてみると、全員が同じ日にテストを受けるとは限らないんですよね。同じテストでも、場所を変えて実施する場合もあるし、病欠などの理由で後日受ける可能性もあります。「実施日」ごとに集計したのでは、各テストごとの平均点を出すことができないかもしれません。
知りたい情報を得るためには、もうちょっとテーブルを整備しておく必要がありそうです。うーん、どうしよう。

このページのまとめなど

  • クエリを使えばいろいろなデータ分析を行うことができる。クエリはぜひ、極めよう。
作成日:2009-01-09

コピーライト