按日期分组

时间:2012-04-10 19:11:27

标签: mysql group-by

我有一个login_log表: enter image description here

我正在尝试根据login_email, login_success, login_email, account_type_id, login_lock, login_ip

构建一个分组“唯一”登录的查询

所以到目前为止我已经

SELECT count(*) count, MAX(login_date) date, login_ip, login_email, account_type_id, login_lock, login_success
FROM `login_log`
GROUP BY login_email, login_success, login_email, account_type_id, login_lock, login_ip
ORDER BY date DESC

哪个让我: enter image description here

但是以第5行和第6行为例。在6上,用户在第5行成功登录前3次登录失败。第5行的计数应为1,但它会在失败的尝试之前对成功登录进行分组。

我想要的是成功登录的一行,登录失败的行,然后登录成功的行,按日期排序。

如何对日期查询进行分组,使它们不会相互“跳跃”?

1 个答案:

答案 0 :(得分:1)

您的查询的问题是您不按分组依据中的日期分组。结果,您的Count(*)不必要地增加。

添加:

Group By Date

会起作用,但可能无法给你正确的间隔。添加MySQL Date()函数可以让你按天拆分,所以你要添加:

Group By Date(Date)

您还可能希望将别名Date更改为非保留的MySQL关键字,例如LogDate或类似的东西。

有关MySQL日期/时间功能的更多信息: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html