如何在MySQL中优化这个?

时间:2012-04-02 16:10:15

标签: mysql sql group-by

我有第一张表中显示的表格结构。

并希望在单个查询中获取男性和女性计数,以便请求只会在服务器上进行一次。

How to optimize this in MySQL ?

1 个答案:

答案 0 :(得分:11)

这是你需要做的:

select gender,
       count(case when age between 0 and 20 then 1 else null end) Age_0_20,
       count(case when age between 21 and 40 then 1 else null end) Age_21_40
from yourtable
group by gender

相应调整:)

更新,澄清

请注意,COUNT聚合函数仅计算非空值。因此,else中的case值必须为NULLWhen值返回1,但它可以是任何非空值。

有些人使用SUM

来实现这一点
select gender,
       sum(case when age between 0 and 20 then 1 else 0 end) Age_0_20,
       sum(case when age between 21 and 40 then 1 else 0 end) Age_21_40
from yourtable
group by gender

结果将完全相同。