2016-08-23 12 views
0

新しいユーザーを毎日カウントし、同じクエリ内のテーブル内のすべてのユーザーをカウントできますか? このクエリは機能しています(1日あたりのユーザー数がカウントされています)。すべてのユーザー数をカウントしている部分を追加するだけです。MySQLは毎日のユーザー数をカウントし、すべてをカウントします

SELECT COUNT(iduser) as newUsers, add_date 
FROM cs_user 
GROUP BY DAY(add_date) 

私が必要例:

newUsers add_date  
1 2016-05-05 17:33:49 
5 2016-03-10 16:44:33 
2 2016-04-15 19:50:42 
5 2016-05-16 18:46:52 
6 2016-04-18 15:01:34 
1 2016-03-21 23:50:40 
2 2016-03-22 18:22:48 
3 2016-03-23 22:02:45 
2 2016-03-25 16:38:56 
15 2016-04-27 18:05:43 
3 2016-04-29 04:54:05 
23 2016-03-30 17:27:26 

私はそれがすべてのユーザーの数を悶えすべき新しい行を必要としています。

+0

「新規ユーザー」と「古いユーザー」はどのように区別しますか?また、期待される出力を追加してください。 – 1000111

+0

これは時間ベースのクエリです。新しいユーザーを追跡したいから翌日を選択します(後でWHERE条件を挿入し、すべてのユーザーを最初に数える必要があります)。 – Sasha

+0

はい、条件付きカウントを使用することができます(条件はcount()またはsum()関数内に配置されます)。 – Shadow

答えて

3

あなたはGROUP BYWITH ROLLUPオプションを使用することができます。これにより、全体がCOUNT()を含む結果セットに追加の行が追加されます。

ところで、the DATE() functionはのようなDATETIMEの項目から日付を生成します。 The DAY() functionは、その月の日を生成します。あなたはあなたが必要なものを決めなければなりません。

私はこのクエリがあなたが望むことをすると思います。

SELECT COUNT(iduser) as newUsers, DATE(add_date) day 
    FROM cs_user 
GROUP BY DATE(add_date) WITH ROLLUP 
+0

これは私が欲しかったのです:)。ヘルプと追加の説明に感謝します。 – Sasha

2

あなたは労働組合を使用することができます。

SELECT COUNT(iduser) as newUsers, add_date 
FROM cs_user 
GROUP BY DAY(add_date) 

UNION ALL 
SELECT COUNT(iduser) as newUsers, NOW() 
FROM cs_user 
関連する問題