Accessを用いた時間単位の集計方法 DatePart関数の活用

クエリ

Accessでデータを集計する際に、ある特定の時間単位として例えば、週単位でデータを処理するといったケースがあります。

このようなときに使える関数として、DatePart関数がありますので、サンプルを交えて紹介します。

スポンサーリンク

DatePart関数について

まずは、DatePart関数について見ていきましょう。基本構文は次のようになります。

DatePart(interval, date [, firstdayofweek] [, firstweekofyear)

ここで、各引数は次のようになります。

表1 DatePart関数の引数について

引数説明
interval必須。 返す時間間隔の文字列式です。
date必須。 評価するバリアント型日付の値です。
firstdayofweek省略可能。 週の始まりの曜日を表す定数です。 省略すると、日曜日を指定したものと見なされます。
firstweekofyear省略可能。 年の第 1 週を指定する定数です。 省略すると、1 月 1 日を含む週が第 1 週と見なされます。

表2 inteval引数の値

設定まとめる時間単位
yyyy
q四半期
m
y年間通算日
d
w平日
ww
h
n
s

表3 firstofweek引数の値

定数説明
vbUseSystem0NLS API の設定を使います。
vbSunday1日曜日 (既定)
vbMonday2月曜日
vbTuesday3火曜日
vbWednesday4水曜日
vbThursday5木曜日
vbFriday6金曜日
vbSaturday7土曜日

表4 firstofyear引数の値

定数説明
vbUseSystem0NLS API の設定を使います。
vbFirstJan111 月 1 日が含まれる週から開始します (既定)。
vbFirstFoutDays2新年の少なくとも 4 日が含まれる最初の週から開始します。
vbFirstFullWeek3年の最初の完全な週から開始します。

このように、DatePart 関数を使用して日付を評価し、特定の時間間隔を返すことができます。 例えば、曜日または現在の時間を計算するために、DatePartを使用する場合があります。

次からは、サンプルデータを用いて週単位で集計する方法を見ていきましょう。

サンプルデータについて

今回用いるサンプルデータを紹介します。

まず、「T_DatePart関数」テーブルを作成し、「品目」、「使用年月日」及び「使用数」フィールドを作成します。これらフィールドのデータ型は、それぞれ、「短いテキスト」、「日付/時刻型」及び「数値型」とします。

続いて、作成した「T_DatePart関数」テーブルに表5のようにサンプルデータを登録します。

表5 サンプルデータ

品目使用年月日使用数
鉛筆2021/08/025
鉛筆2021/08/0411
鉛筆2021/08/102
消しゴム2021/08/011
消しゴム2021/08/033
消しゴム2021/08/128
消しゴム2021/08/132
鉛筆2021/08/147

これで準備は完了です。それでは次からDatePart関数を用いて、週単位での各品目の使用数を集計してみましょう。

週単位での集計方法

まずは、「Q_DatePart関数」クエリを作成し、テーブルの表示で「T_DatePart関数」テーブルを追加し、集計クエリに設定します。

続いて、【フィールド】項目と【集計】項目には、以下のように値(カッコ内が【集計】項目に入力する値。)を入力します(図1参照)。

・品目 (グループ化)
・使用数の合計: 使用数 (合計)
・週数: DatePart(“ww”, [使用年月日]) (グループ化)

図1 DatePart関数を使ったクエリ

これで、準備は整いましたのでどのように集計されるかを確認してみましょう。

作成したクエリをデータシートビューで開くと、図2に示すように1月1日を起点とした週数で、品目ごとに集計した結果が表示されます。

図2 DatePart関数による集計結果

このように、DatePart関数を用いることで日付情報から時間単位での抽出をすることができるようになります。

まとめ

今回は特定の時間単位でデータ集計をする方法を紹介しました。週当たり、月当たり等、決まった時間単位で定期的にデータを集計しないといけない場合に、今回紹介した方法でクエリを作成しておくことで、処理が格段と早くなるかと思いますので、活用されてみてはいかがでしょうか。

Accessを勉強する上では、以下の書籍が参考になりますので、是非お手元に1冊用意されてみてはいかがでしょうか。

スポンサーリンク

コメント

タイトルとURLをコピーしました