sql - 在 SQL 中合并行 COUNTS
问题描述
目前我在 sql 中有数据,需要合并行中的计数。
我的代码是:
WHERE lower(GENDER) IS NOT NULL
GROUP BY lower(GENDER)
它的表格如下:
Gender Count
female 100
f 101
male 102
m 103
unknown 104
有没有办法将女性和 f 的计数组合起来,然后同样从男性和 m 组合起来?
解决方案
使用case
表达式:
select
case lower(gender)
when 'f' then 'female'
when 'm' then 'male'
else lower(gender)
end new_gender,
count(*) cnt
from mytable
where gender is not null
group by case lower(gender)
when 'f' then 'female'
when 'm' then 'male'
else lower(gender)
end
请注意,您不需要lower()
检查 if gender
is null
。
一些数据库支持group by
子句中的位置参数,所以你可以这样做:
group by 1
其他数据库支持重新使用select
子句中定义的别名:
group by new_gender
推荐阅读
- operating-system - Alpine linux 操作系统版本控制
- php - 带有自定义主题的 Wordpress 的 504 网关超时错误
- apache - 即使安装在正确的位置,Apache 也找不到目录
- javascript - 在Openedx Based Project中,Xblock自定义需要在javascript的textarea中添加CKEditor
- python - python pandas数据转换
- groovy - 请告诉我如何在 Groovy 中替换
- pyspark - Pyspark - 具有不同列名的联合表
- angular - Angular HighChart 更新
- python - 用下一个和上一个正数的平均值替换负数、NaN 和 0
- angular - 在发出事件时:期望一个间谍,但得到了函数