MYSQL-多计数状态
我试图在demographioc表上进行查找,以显示一些统计数据。然而,由于我们的人口统计表很大,我想在一个查询中完成它 有两个重要字段:性别、上次登录 我希望能够获得不同日期范围的总登录次数(您希望使用。MYSQL-多计数状态,mysql,pivot,aggregate-functions,Mysql,Pivot,Aggregate Functions,我试图在demographioc表上进行查找,以显示一些统计数据。然而,由于我们的人口统计表很大,我想在一个查询中完成它 有两个重要字段:性别、上次登录 我希望能够获得不同日期范围的总登录次数(您希望使用。选择性别, 总和(如果(DATEDIFF(NOW(),上次登录)
选择性别,
总和(如果(DATEDIFF(NOW(),上次登录)<1,1,0)),
总和(如果(DATEDIFF(NOW(),最后一次登录)介于1和7,1,0之间),
总和(如果(DATEDIFF(NOW(),最后一次登录)介于7和30,1,0之间))
从玩家帐户演示
按性别分组
pivot表用于显示,对吗?我希望能够在一个查询中选择所有内容,而不必选择整个表并在php中执行所有操作。这不是查询语言支持的概念。如果确实需要,可以在select
语句中逐个检查(例如,请参见Wrikken的回答)。PIVOT
和UNPIVOT
我相信是ANSI,但仅在SQL Server 2005+和Oracle 11g+上受支持。在这方面,ANSI-92就是一个例子……根据OP的标签,他的问题是关于mySQL,据我所知,mySQL没有实现任何PIVOT表功能。
SELECT sex, count(*) peeps
FROM player_account_demo
WHERE last_demo_update > 1275868800
GROUP BY sex
sex peeps
----------------
UNKNOWN 22
MALE 43
FEMALE 86
sex peeps<1day peeps1-7days peeps7-30days
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