2016-09-29 4 views
1

こんにちは私はユーザーイベントを記録するテーブルを持っています。MYSQLは以前にレコーダーを使用したことのないフィールド値を見つける

date  | event | userId 
2016/09/29 | A  | 10 
2016/09/29 | A  | 3 
2016/09/29 | A  | 2 
2016/09/28 | A  | 2 
2016/09/28 | B  | 2 
2016/09/27 | A  | 1 
2016/09/27 | A  | 1 
2016/09/27 | B  | 1 

が、私は現在の月の日ごとにカウントする必要があり、前に見たことがないし、userIdを数(単純化するために、新規ユーザーの数)。

私は、当日の次のクエリを考え出しました。

SELECT DATE(date) AS time, COUNT(DISTINCT userId) AS count FROM event 
WHERE DATE(date) = date(now()) 
AND userId NOT IN (
    SELECT DISTINCT userId FROM event WHERE DATE(date) <= DATE_SUB(now(), INTERVAL 1 DAY) 
    AND userId IS NOT NULL 
) 

しかし、今月の同じ日に同じ結果を得るための効率的なクエリを見つけることができません。

答えて

1

助けることができる

希望:

SELECT myDate, COUNT(userId) AS user_count 
FROM (
    SELECT userId, DATE(MIN(date)) AS myDate 
    FROM event 
    GROUP BY userId 
) AS ch 
GROUP BY myDate 
+1

この1つは私のために働いた、ありがとう。 –

0
select fd date, count(1) newUserCount from 
(select min(date) fd ,userId from event where date between {monthStart} and {monthEnd} 
group by userId)t group by fd 

各ユーザーの最初の訪問日を特定し、この月の新しいユーザーの日数は、毎日のユーザー数です。これはあなたがこれを試すことができます

関連する問題