双向条形图(人口金字塔),sql数据集处理

表A中有badge(工号),sex(性别:男、女),age(周岁)三个字段,如何利用select case when写SQL语句,使得查询结果,以年龄段,男、女,三个字段显示,男、女列的字段值为百分比,效果和图片中的差不多

图1.png

冥河 发布于 2021-1-3 16:21
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
zsh331Lv8专家互助
发布于2021-1-3 16:35(编辑于 2021-1-3 16:39)
SELECT
age_t AS '年龄',
sum(CASE WHEN sex = '男' THEN 1 ELSE 0 END) / count(1) AS 'boy_pt',
sum(CASE WHEN sex = '女' THEN 1 ELSE 0 END) / count(1) AS 'girl_pt' -- count(*) as '人数' 
FROM
(
SELECT
badge,
sex,
CASE
WHEN age >= 0
AND age <= 4 THEN
'0-4'
WHEN age >= 5
AND age <= 9 THEN
'5-9'
WHEN age >= 10
AND age <= 14 THEN
'10-14'
WHEN age >= 15
AND age <= 19 THEN
'15-19'
END AS age_t
FROM
tablename
) k
GROUP BY
age_t

-----------------

按照这个语法分组即可;

-- 分组没有分完,自己补充完整即可;

-- 目前只分到了15-19,其它组自行补充;

  • 1关注人数
  • 545浏览人数
  • 最后回答于:2021-1-3 16:39
    请选择关闭问题的原因
    确定 取消
    返回顶部