1

人々がいつログインしたかを追跡するWebアプリのログを含むテーブルがあります。私のテーブルの例は次のとおりです。

| user_id | date_time        |
+---------+------------------+
|    0033 | 2012-11-22 10:33 | <- first login of 0033 on 2012-11-22
|    0034 | 2012-11-22 10:38 | <- first login of 0034 on 2012-11-22
|    0052 | 2012-11-22 10:43 | <- first login of 0052 on 2012-11-22
|    0052 | 2012-11-23 09:23 |
|    0066 | 2012-11-23 15:58 | <- first login of 0066 on 2012-11-23
|    0033 | 2012-11-23 16:14 |

私が欲しいのは、各日付に初めてログインした人の数を含むテーブルです。

| count | date       |
+-------+------------+
|     3 | 2012-11-22 | <- there were 3 users that logged in for the first time on 2012-11-22
|     1 | 2012-11-23 |

実行することで、日付のみを取得できることを知っています

SELECT DATE(`date_time`) AS `date`
FROM `logging`
GROUP BY `date`
ORDER BY `date` ASC

1 つのクエリで 2 番目のテーブルを取得したいのですが、それが可能であることはわかっていますが、方法がわかりません。前もって感謝します

4

3 に答える 3

1

非相関サブクエリを使用して、すべてのユーザーの最初のログイン日を取得し、それらの日付をグループ化して 1 日あたりの最初のログイン数を取得できます。

SELECT dd, COUNT(*)
FROM (SELECT MIN(DATE(`date_time`)) AS dd
    FROM `logging`
    GROUP BY `user_id`) a
GROUP BY dd
ORDER BY dd;

Demo

于 2012-11-27T13:28:59.730 に答える
1

以前のログイン レコードがない user_id について、1 日あたりのログイン数をカウントします。

select  DATE(`date_time`) as `date`,
        count(user_id)
from    `logging` l1
where   user_id not in (
        select user_id from `logging` l2 where l1.user_id = l2.user_id and l2.date_time < l1.date_time)
group by DATE(`date_time`)
于 2012-11-27T13:30:22.263 に答える
-1

これが必要だと思います:

SELECT count(1) ,
       DATE(`date_time`) 
from my_table
group by DATE(`date_time`)

日ごとにログインしたユーザーが必要な場合

Select 

user_id, `date_time` from my_table group by DATE(`date_time`), user_id
于 2012-11-27T13:20:48.650 に答える