mysql - 对具有相同属性的两个条件使用 sum
问题描述
当我创建一个表来计算 18-40 之间的用户时,我需要在表达式中有两个关于 BirthYear 的条件sum((age>=18 and age<=40) and (Gender='M'))
,但是这个的返回总是等于 0,整个查询和输出如下所示,(MySQL 5.30)
create table AgeUser
select
Id as 'Id',
sum((age<18) and (Gender='M')) as 'MaleUsersUnder18',
sum((age>=18 and age<=40) and (Gender='M')) as 'MaleUsers18To40',
sum((age>40) and (Gender='M')) as 'MaleUsersOver40',
sum((age<18) and (Gender='F')) as 'FemaleUsersUnder18',
sum((age>=18 and age<=40) and (Gender='F')) as 'FemaleUsers18To40',
sum((age>40) and (Gender='F')) as 'FemaleUsersOver40'
from User group by Id;
id MUUnder18 MU18To40 MUOver40 FUUnder18 FU18To40 FUOver40
72 2137 0 1316 645 0 123
79 2613 0 1616 1064 0 676
82 592 0 363 203 0 554
用户表的示例 Id 表示服务站 ID
Id userid Name age gender UserType
72 12 L 18 M customer
如何修复查询?
解决方案
最好的总和
sum(case when age<18 and Gender='M' then 1 else 0 end) as 'MaleUsersUnder18',
ETC..
推荐阅读
- algorithm - 这是什么排序算法,可以改进吗?
- kotlin - 带有 leptonica 问题的 Kotlin-native C-interop
- c# - 在基于 ARKit 标记的场景之间切换会导致应用崩溃
- python - 给定一列具有特定值的编辑数据框的行
- c - 使用 Frama-C 检查 C 代码是否存在无效的内存访问
- flutter - 增加小部件的点击检测区域?
- python - 更改从 *.csv 文件读取的数据
- sass - 是否可以将 Scss 转换为 Material-UI 样式格式?
- python - 使用 asyncssh 在远程服务器上运行命令
- sql - 一行中每个人的最后 3 个就业信息