2017-03-01 3 views
-2

私は、次のクエリを持っている:GROUPを使用しているときに、別の列の重複値を無視するにはどうすればよいですか?

SELECT 
    DATE(`timeStamp`),COUNT(*) 
FROM 
    `wf`.sh` 
WHERE 
    (DATE(`timeStamp`) >= curdate()- INTERVAL 31 DAY) 
GROUP BY 
    DATE(`timeStamp`) 
HAVING 
    COUNT(DATE(`timeStamp`)) > 0 
ORDER BY 
    DATE(`timeStamp`) ASC; 

このクエリの目的は、月の空間で、一日あたりの私のシステムでは、オンラインユーザーの量を取得することです。

例データセット:現在の形式で

uID  timeStamp 
1  2016-11-28 00:27:01 
1  2016-11-28 01:10:15 
1234 2016-11-28 02:50:00 
2  2016-11-28 06:11:09 
47  2016-11-28 08:32:48 
1246 2016-11-28 09:51:47 

、このクエリは、たとえば、重複した日付の行数を返します。

timeStamp COUNT(*) 
2017-01-29 256 
2017-01-30 224 
2017-01-31 240 
2017-02-01 95 
2017-02-02 136 

は、私は別のフィールドuIDを持っています。私はGROUPも重複している行を無視するようにクエリを変更する必要がありますuIDフィールドは毎日です。私は別のGROUP BYを作成しようとしましたが、「間違ったGROUP BY句」(またはその性質の何か)というエラーが出されました。

純粋なMySQL経由でこれを行うことはできますか?

+0

を使用することができます。.. – cybermonkey

答えて

1

あなたは* 2 *ドライブバイ時間の最後のカップル以内に発生していた私の質問にdownvotesの背後にある理由を知っていいだろう副選択

SELECT 
    visitDate,COUNT(*) 
FROM 
    (SELECT DISTINCT DATE(`timeStamp`) as visitDate, uID FROM `wf`.sh`) alias_t 
WHERE 
    (visitDate >= curdate()- INTERVAL 31 DAY) 
GROUP BY 
    visitDate 
HAVING 
    COUNT(visitDate) > 0 
ORDER BY 
    visitDate ASC; 
関連する問題