可以实现,但是,这种查询几乎无法优化啊.
SELECT
DATE_FORMAT( create_time, "%Y-%m-%d" ) AS d,
sum(
IF
( sex = 1, 1, 0 )) AS male,
sum(
IF
( sex = 2, 1, 0 )) AS female,
sum( is_signed ) as signed,
sum(
IF
( DATEDIFF( NOW(), birth_day )/ 365 < 20, 1, 0 )) AS under20,
sum(
IF
( DATEDIFF( NOW(), birth_day )/ 365 >= 20 AND DATEDIFF( NOW(), birth_day )/ 365 < 31, 1, 0 )) AS 20to30,
sum(
IF
( DATEDIFF( NOW(), birth_day )/ 365 >= 31, 1, 0 )) AS 30more
FROM
`user`
GROUP BY
d;
子查询版
SELECT
u.d,
sum(
IF
( u.sex = 1, 1, 0 )) AS male,
sum(
IF
( u.sex = 2, 1, 0 )) AS female,
sum( u.is_signed ) AS signed,
sum(
IF
( u.age < 20, 1, 0 )) AS under20,
sum(
IF
( u.age >= 20 AND u.age < 31, 1, 0 )) AS 20to30,
sum(
IF
( u.age >= 31, 1, 0 )) AS 30more
FROM
( SELECT DATE_FORMAT( create_time, "%Y-%m-%d" ) AS d, sex, is_signed, DATEDIFF( NOW(), birth_day )/ 365 AS age FROM USER ) AS u
GROUP BY
u.d
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…