2011-06-30 15 views
2

は、私はテーブルには、次の列を使用するactivity呼ばれています:MySQLグループBy&Count ...ネストされたグループ化はできますか?

LoginDate, LoginID, Department, IsMGR 

私はこのクエリを試してみました:

SELECT COUNT(*), 
     DATE_FORMAT(LoginDate, '%m%d%Y') AS LogDate, 
     LoginID, Department 
    FROM `activity` 
    WHERE IsMGR = '1' 
    AND LoginDate > '2011-01-01 00:00:00' 
GROUP BY LoginID, LogDate 
ORDER BY LoginID,LogDate DESC 

私は何で終わることです:

与えている
 
3 02172011 sdavis accounting 
1 02162011 sdavis accounting 
2 02132011 sdavis accounting 
1 02102011 sdavis accounting 
5 02092011 sdavis accounting 
4 02082011 sdavis accounting 
1 03182011 dmorris  marketing 
1 03092011 dmorris  marketing 
6 04142011 cchan technology 
1 03282011 cchan technology 
2 03262011 cchan technology 
2 03112011 cchan technology 
1 03102011 cchan technology 

その日に何回ログインしたのかを数えます。私が望むのは、1日に1つしかカウントされず、すべての日がそれぞれグループ化されていることです最後の日と一緒にログインした日数をカウントした人。上記のデータサンプルを使用して、私が望むの出力は、だから私はしたいと思うものに何とかグループの基準の第二セットすることにより上記グループ化された結果である

 
6 02172011 sdavis accounting 
2 03182011 dmorris marketing 
5 04142011 cchan technology 

でなければなりませんか...?

+0

をあなたは 'ログインID、LogDate' BY GROUPは、あなたが' LogDate'の世話をしていない結果が必要ない場合は、なぜ? – zerkms

答えて

4

これを試してみてください:

SELECT COUNT(distinct LoginDate) AS NumLogins, 
     DATE_FORMAT(MAX(LoginDate), '%m%d%Y') AS LastLogDate, 
     LoginID, Department 
FROM activity 
WHERE IsMGR='1' AND LoginDate > '2011-01-01 00:00:00' 
GROUP BY LoginID, Department 
ORDER BY LoginID, Department DESC 
+0

おかげさまで、また下の方におかげさまで! SELECT COUNT(別のDATE_FORMAT(LoginDate、 '%m%d%y')...とグループ化は私が望むように機能しました) ありがとうございました! - CDF – CDF

+0

@Bohem 'GROUP BY LoginID、Department' –

+0

gotcha。編集済みmx .thx – Bohemian

1
select 
    count(distinct LoginDate) as loginCount, 
    max(LoginDate) as lastLoginDate, 
    LoginID, 
    Department 
FROM `activity` 
where IsMGR='1' 
and LoginDate > '2011-01-01 00:00:00' 
GROUP BY LoginID, Department 
ORDER BY LoginID, lastLoginDate DESC 
関連する問題