@kazukikurahara (kurahara)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Accessについての質問です

解決したいこと

accessについての質問です。
(超初心者の為、初めて作業をしていますが分からず助けていただきたいです、、、) テーブルから、各月毎のユーザーのログイン数を調べる為のクエリを作ろうとしています。
期間は、2021年8月〜2022年8月までです。
「TIME」というレコードに、ログイン時刻が秒単位で記録されており、
「USR_ID」というレコードに、一意のIDがユーザーに割り振られています。
同日に何度も同じユーザーがログインすると、USR_IDは重複する形でデータには残ります。
今回は、月毎のログイン数を、USR_IDを重複させることなく抽出したいです。
また、1日〜25日までのログイン数も同じく重複なしで抽出したいです。

抽出する際の表記ですが、

年月 25日時点数 月別ログイン数
202107
202108
202109

というようにしようと考えています。

年月 : Format([TIME], “yyyymm”)
という表記で上記の様な表示になるかとは思うのですが、月毎にUSR_IDを重複なしでカウントするにはどうしたら良いのでしょうか??

別のクエリを作り、USR_IDのみフィールドに選択し、固有の値を「はい」に選択したものを用意し結合なりするものかと考えたのですがうまくいきません、、

25日時点に関しても、別のクエリで Format([TIME], “dd”) <= 25
というフィールドを用意しましたが、上手くカウントできません、、

おそらく初歩的な質問だとは思うのですが、どなたか教えていただければと思います、、、

0 likes

1Answer

「こういうクエリを書いたら、こういう結果になったが、期待する出力は、こういうもの」みたいに具体的に示す方が回答しやすいと思います。

毎日ログインするAさん(時には、一日に何度もログインすることもある)と、月に一回しかログインしないBさんが居るとして、どちらも1件としてカウントし、この月は「2」と出力したいということでしょうか?

自分はSQLに詳しくないですが、集約してCountするだけかと思います。

クエリ
select t1.yymm, count(t1.user_id) as count
from (
    select format([テーブル].TIME, 'yyyymm') as yymm, [テーブル].USER_ID as user_id
    from テーブル
    group by format([テーブル].TIME, 'yyyymm'), [テーブル].USER_ID
)  t1
group by t1.yymm 
;

サブクエリにしました。内側のクエリで月単位にユーザを抽出し、外側のクエリで月毎のユーザの件数を求めています。どうでしょうか?
サブクエリにしなくても得られると思いますが、ご参考まで。

0Like

Your answer might help someone💌