私が使用するテーブルの例は次のとおりです。
id_user | process_number | date
---------------------------------------
01 | 1 | 2012-05-04
01 | 1 | 2012-05-04
02 | 0 | 2012-05-04
01 | 1 | 2012-05-05
01 | 2 | 2012-05-05
01 | 0 | 2012-05-05
02 | 0 | 2012-05-05
03 | 1 | 2012-05-05
04 | 2 | 2012-05-05
05 | 1 | 2012-05-05
05 | 1 | 2012-05-05
06 | 0 | 2012-05-05
07 | 3 | 2012-05-05
私が取得したい結果は、一意のプロセスの数 (id_user でグループ化)、合計プロセスの数 (日付でグループ化)、および process_number が「0」に等しくない場合 (日付とユーザーでグループ化) の個別のユーザー数です。私はクエリでこれを達成しようとしました:
SELECT COUNT( DISTINCT id_user ) AS user_process, COUNT( * ) AS total_process, DATE( date) AS date_process, SUM( IF( process_number = '0', 0, 1 ) ) notification FROM a_proces GROUP BY DATE( date ) ORDER BY DATE( date ) DESC LIMIT 0 , 10
このクエリは、特定の日に、通知列にゼロより大きい複数の process_number を持つすべてのユーザーを追加します。この例の正しい結果は次のようになります。
date_process | user_process | total_process | notification
------------------------------------------------------------------------------
2012-05-04 | 2 | 3 | 1
2012-05-05 | 7 | 10 | 6
助けてくれてありがとう。