我正在尝试在人口统计表上进行查找以显示一些统计信息。但是,由于退出的人口统计表很大,因此我想在一个查询中执行此操作。

有两个重要的字段:性别,last_login

我希望能够获得各种日期范围(
我现在知道如何在一个日期范围内进行操作。例如,不到1天前:

SELECT sex, count(*) peeps
  FROM player_account_demo
 WHERE last_demo_update > 1275868800
GROUP BY sex


哪个返回:

sex       peeps
----------------
UNKNOWN   22
MALE      43
FEMALE    86


但是我必须为每个范围执行一次。有没有办法让所有3个范围都在那里?

我希望我的最终结果看起来像这样:

sex       peeps<1day      peeps1-7days       peeps7-30days


谢谢!

重要说明:最后demo_update是纪元时间(unix时间戳)

最佳答案

SELECT sex,
  SUM(IF(DATEDIFF(NOW(),last_login) < 1,1,0)),
  SUM(IF(DATEDIFF(NOW(),last_login) BETWEEN 1 AND 7,1,0)),
  SUM(IF(DATEDIFF(NOW(),last_login) BETWEEN 7 AND 30,1,0))
FROM player_account_demo
GROUP BY sex

关于mysql - MYSQL-多计数语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2992062/

10-09 09:04