@Nontaro

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!

SQLで親グループ内に所属しているアカウントのログイン数を調べたい

Q&A

こんにちは。
SQLについて、お知恵を貸していただきたいです。
知識不足で大変恐縮ですが、何卒よろしくお願いいたします。

解決したいこと

1ヵ月以内のログインの数を数えたいと思っています。
ただ、アカウントごとのログインではなく、そのアカウントが所属しているグループのログイン総数・実数を出したいと思っています。

例)
Aグループにaさん、bさん、cさん
Bグループにeさん、fさん、dさん
がいます。
この一か月間での、Aグループのa~cのログイン総数・実数およびBグループのe~dさんのログイン総数・実数を求めたいです。

現状

『ユーザーID(User_id)とグループ(Group_id)が紐づいているテーブル』(=User)と『ユーザーIDごとのログインログ(Tracking)のテーブル』(=Login_log)2種類があります。

考えていること

Login_logから1ヵ月のログイン履歴を抽出し、Userと紐づけてカウント。そして、User内でカウントユーザーIDごとのカウント数をグループ内で総和するイメージでしょうか?
ユーザーIDごとのログインカウントはできるのですが、それを所属しているグループでの総和をする方法が考えついておりません。

クエリをご教授いただけますと幸いです。
よろしくお願いいたします。

0 likes

1Answer

ユーザテーブルとログテーブルを結合したうえで、グループごとに集計すればうまくいかないでしょうか?

クエリとしては以下のようなイメージになると思います。

select GroupCD, count(*)
from User
left join Log
on User.ID = Log.UserID
and LoginDatetime >= DATE_ADD(CURRENT_DATE() , INTERVAL -1 MONTH)
group by GroupCD;

こちらで実行結果を確認できるようにもしてみたので、ご参考にしてください。

1Like

Comments

  1. @Nontaro

    Questioner

    ありがとうございます。

    試してみます。
  2. @Nontaro

    Questioner


    追加ですみません。

    例えば、a~dにそれぞれ属性(studentとteacher)がついているとき、teacherのみのログインを出したいと考えると、whereでいじるほうがいいのでしょうか?
  3. その場合はwhere句で絞るでいいと思います。

Your answer might help someone💌