MYSQL - 多个计数语句

时间:2010-06-07 18:23:23

标签: mysql pivot aggregate-functions

我正在尝试在我们的demographioc表上查找以显示一些统计数据。但是,由于人口统计表格已退出,我想在一个查询中执行此操作。

有两个重要的字段:sex,last_login

我希望能够获得各种日期范围的登录总数(< 1天前,1-7天前,7-30天前等)GROUPED BY sex

我现在知道如何在一个日期范围内完成。例如,不到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时间戳)

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您想使用Pivot Table