如何在MySQL中优化这个?

Tho*_*son 9 mysql sql group-by

我有第一个表中显示的表结构.

并且想要在单个查询中获取男性和女性计数,以便请求仅在服务器上进行一次.

如何在MySQL中优化这个?

Adr*_*iro 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
Run Code Online (Sandbox Code Playgroud)

相应调整:)

更新,澄清

请注意,COUNT聚合函数仅计算非空值.因此,必须是else值.该值返回但它可以是任何非空值.caseNULLWhen1

有些人通过使用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
Run Code Online (Sandbox Code Playgroud)

结果将完全相同.

  • 你刚刚写了'than`而不是`then`吗? (4认同)