新規ログイン数
配点 : 20点難易度 : 2
制限実行時間 : 1000ms制限メモリ使用量 : 128 MB
SQLiteの注意点

TOPSIC SQLでは、SQLの実行環境にSQLiteを使用しています。SQLite以外のRDBMSの文法を使用することはできません。
問題を解く際に注意すべきSQLiteの制約について、以下に記載してありますのでご確認下さい。

  1. NUMERIC、INTEGER、REALは、自身のクラスへの変換が推奨されていますが、変換できなかった場合でも、そのまま格納されます。
  2. 新しくデータを追加した場合、既に格納されているデータの中で ROWID の値が最大のものを探し、それに1を加えた値が新しく追加されるデータの ROWID の値として保存されます。
  3. 外部結合は、左外部結合を行う LEFT OUTER JOIN 句のみ使用できます。
    ※2022年12月以降、LEFT / RIGHT / FULL OUTER JOIN が使用可能となりました。
  4. 指定した日付と時刻のタイムゾーンはUTCとして扱われます。
  5. 日付関数や文字列関数については、SQLiteで固有の関数があります。
  6. テーブル項目の論理名が「◯◯日」となっている場合は、日付項目の時分秒は設定されていません。論理名が「◯◯日時」となっている場合は、日付項目の時分秒まで設定されています。
    • 「受注日」の場合は「2021-01-01」
    • 「受注日時」の場合は「2021-01-01 15:15:15」

その他のSQLiteの制約については、SQLiteの公式ドキュメントをご確認ください。
また、ER図の読み方やSQLiteの関数および構文などについては、「受験ルール・用語」をご確認ください。

問題

自社のECサイトのログイン情報を記録しているログデータ(ACCESS_LOG)がある。 このデータより、2023年8月の1カ月間に初めてログインした会員数を、ログイン日付毎に集計して表示しなさい。
ただし、8月に複数回ログインした会員はそのうち初めの日付でのみカウントするものとする。例えば、8月1日に初めてログインし、8月2日にもログインした会員は8月1日のみカウントするものとする。

表示項目は以下とする。(エイリアスを使用し→の項目名とする)

  • LOGIN_DATETIME → FIRST_LOGIN
  • ログイン日付毎に集計した会員数 → MEMBER_CNT

表示順

  1. 表示項目のFIRST_LOGINの降順

表示フォーマット

※あくまでフォーマットを示すもので、正解例ではありません。行数も正解とは異なります。

FIRST_LOGIN MEMBER_CNT
2023-08-31 1
2023-08-15 1
2023-08-10 3
2023-08-04 1
2023-08-02 3

ER図 (半角:物理名、全角:論理名)


テーブル定義

テーブル名: ACCESS_LOG

主キー 列名 データ型 必須 デフォルト値
✔︎ ACCESS_ID INTEGER ✔︎ NULL
MEMBER_CODE VARCHAR ✔︎ NULL
LOGIN_DATETIME VARCHAR ✔︎ NULL

サンプルデータ

テーブル名: ACCESS_LOG

ACCESS_ID MEMBER_CODE LOGIN_DATETIME
1 10000 2023-07-21 23:59:59
2 11000 2023-07-22 08:00:59
3 10000 2023-07-22 09:00:59
4 10000 2023-07-22 10:00:59
5 10000 2023-07-26 14:00:59
6 14000 2023-07-25 23:59:59
7 14000 2023-07-26 23:59:59
8 20000 2023-07-31 23:59:59
9 15000 2023-07-31 23:59:59
10 15000 2023-08-01 00:00:01
11 10000 2023-08-01 00:00:01
12 19000 2023-08-02 09:00:01
13 11000 2023-08-06 10:00:01
14 17000 2023-08-02 11:00:01
15 18000 2023-08-02 12:00:01
16 11000 2023-08-04 13:00:01
17 25000 2023-08-04 14:00:01
18 25000 2023-08-06 00:00:01
19 21000 2023-08-10 10:00:01
20 22000 2023-08-10 11:00:01
21 23000 2023-08-10 12:00:01
22 24000 2023-08-15 09:00:01
23 24000 2023-08-15 05:00:01
24 20000 2023-08-16 00:00:01
25 12000 2023-08-31 00:00:01
26 12000 2023-08-31 23:59:59
27 13000 2023-09-01 00:00:00
28 12000 2023-09-02 00:00:00

Sorry, Japanese Only.