0

我正在尝试查找我们的人口统计表以显示一些统计数据。但是,由于人口统计表很大,我想在一个查询中完成。

有 2 个字段很重要:sex、last_login

我希望能够获得各种日期范围的登录总数(<1 天前、1-7 天前、7-30 天前等)按性别分组

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

4

2 回答 2

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
于 2010-06-07T19:05:21.723 回答
0

您想使用数据透视表

于 2010-06-07T18:28:59.467 回答