Postgresql 用sql语句实现年龄分段统计

老人年龄 图表男

        male_list = [0, 0, 0, 0, 0, 0]
        cr.execute(
            """select 
                    CASE WHEN age<50 THEN '0-50'
                         WHEN age<59 THEN '50-59'
                         WHEN age<69 THEN '60-69'
                         WHEN age<79 THEN '70-79'
                         WHEN age<89 THEN '80-89'
                         WHEN age<99 THEN '90-99'
                         WHEN age<200 THEN '100+'
                         ELSE 'other'
                    END as age,
                    count(*)
                from res_partner where gender ='male' and company_id = %s
                group by 
                    CASE WHEN age<50 THEN '0-50'
                         WHEN age<59 THEN '50-59'
                         WHEN age<69 THEN '60-69'
                         WHEN age<79 THEN '70-79'
                         WHEN age<89 THEN '80-89'
                         WHEN age<99 THEN '90-99'
                         WHEN age<200 THEN '100+'
                         ELSE 'other'
                    END
           """ % user.company_id.id)

        res = dict(((status['age'], status['count']) for status in cr.dictfetchall()))

        if res:
            male_list[0] = res.get('50-59', 0)
            male_list[1] = res.get('60-69', 0)
            male_list[2] = res.get('70-79', 0)
            male_list[3] = res.get('80-89', 0)
            male_list[4] = res.get('90-99', 0)
            male_list[5] = res.get('100+', 0)

在这里插入图片描述
同理我们也可实现其它关键字查询分组统计

        # 老人类型 饼图
        elderly_type_list = []
        cr.execute(
            """select 
                    CASE WHEN elderly_type='ordinary' THEN '普通老人'
                         WHEN elderly_type='fiveg' THEN '五保老人'
                         WHEN elderly_type='disabled' THEN '残疾老人'
                         ELSE 'other'
                    END as type,
                    count(*)
                from res_partner where company_id = %s
                group by 
                    CASE WHEN elderly_type='ordinary' THEN '普通老人'
                         WHEN elderly_type='fiveg' THEN '五保老人'
                         WHEN elderly_type='disabled' THEN '残疾老人'
                         ELSE 'other'
                END
           """ % user.company_id.id)

        res = dict(((status['type'], status['count']) for status in cr.dictfetchall()))

        if res:
            list_name = ['独居老人', '空槽老人', '五保老人','残疾老人','普通老人','失能老人','半失能老人']
            for l in list_name:
                values = {
                    'name': l,
                    'value': res.get(l, 0),
                }
                elderly_type_list.append(values)

在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中亿丰数字科技集团有限公司

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值