首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有没有办法查询出自生日的人口统计数据?

有没有办法查询出自生日的人口统计数据?
EN

Stack Overflow用户
提问于 2019-09-28 06:36:46
回答 1查看 61关注 0票数 0

我正在尝试生成人口统计数据。我做了所有单独的查询,因为我想不出一次做它们的方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.utils import timezone
from dateutil.relativedelta import relativedelta # $ pip install python-dateutil

teenagers_count = queryset.filter(birthday__lte=now-relativedelta(years=10), birthday__gt=now-relativedelta(years=20)).count()
twenties_count = queryset.filter(birthday__lte=now-relativedelta(years=20), birthday__gt=now-relativedelta(years=30)).count()
thirties_count = queryset.filter(birthday__lte=now-relativedelta(years=30), birthday__gt=now-relativedelta(years=40)).count()
forties_count = queryset.filter(birthday__lte=now-relativedelta(years=40), birthday__gt=now-relativedelta(years=50)).count()
fifties_and_older_count = queryset.filter(birthday__lte=now-relativedelta(years=50)).count()

有没有办法只用一个查询就能做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-28 07:33:34

首先,使用以下命令将您的年龄标注到您的查询集:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
age = ExpressionWrapper(datetime.now() - F('created_at'), output_field=fields.DurationField())
queryset.annotate(age=age) #=> Will add "age" on each records

第二,用例/何时在age_range字段上构建您自己的逻辑

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
queryset.annotate(age=age).annotate(
            age_range=Case(
                When(age__gte=datetime.timedelta(years=10), age__lt=datetime.timedelta(years=20), then=Value('teens')),
                When(age__gte=datetime.timedelta(years=20), age__lt=datetime.timedelta(years=30), then=Value('twenties')),
                When(age__gte=datetime.timedelta(years=30), age__lt=datetime.timedelta(years=40), then=Value('thirties')),
                When(age__gte=datetime.timedelta(years=40), age__lt=datetime.timedelta(years=50), then=Value('fourties')),
                When(age__gte=datetime.timedelta(years=50), then=Value('fifties')),
                default=Value('Unknow'),
                output_field=fields.CharField(),
        )) #=> This will add "age_range" field on your queryset

第三,只要按"age_range“聚合即可。总而言之:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import datetime 
from django.db.models import Case, When, Value, F, Count, ExpressionWrapper, fields

age = ExpressionWrapper(datetime.now() - F('created_at'), output_field=fields.DurationField())
counts = queryset.annotate(age=age).annotate(
            age_range=Case(
                When(age__gte=datetime.timedelta(years=10), age__lt=datetime.timedelta(years=20), then=Value('teens')),
                When(age__gte=datetime.timedelta(years=20), age__lt=datetime.timedelta(years=30), then=Value('twenties')),
                When(age__gte=datetime.timedelta(years=30), age__lt=datetime.timedelta(years=40), then=Value('thirties')),
                When(age__gte=datetime.timedelta(years=40), age__lt=datetime.timedelta(years=50), then=Value('fourties')),
                When(age__gte=datetime.timedelta(years=50), then=Value('fifties')),
                default=Value('Unknow'),
                output_field=fields.CharField(),
        )).order_by('age_range').values('age_range').annotate(count=Count('age_range'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58143974

复制
相关文章
从数据库中查询马上过生日的人并统计各年龄段及性别所占的人数
业务需求: 从员工表中查询5天之内过生日的人,以及五天之内合同到期的人,返回一个 Map 集合,封装了员工的姓名及还有几天过生日; Dao 层如下: @Repository public interface EmpMapper extends BaseMapper<Employee> { @Select("select * from employee\n" + "where DATE_FORMAT(birthday,'%m-%d') >= DATE_FORMAT(now(
wsuo
2020/07/31
7900
Java中检索联系人中有没有今天生日的
查询crm_linkman表中,birthday(数据库中为date类型)字段中,月日为5-31的记录(主要用于检索今天有没有联系人生日)
Java架构师必看
2021/05/17
4400
Java中检索联系人中有没有今天生日的
webpack版本问题_webpack查询有没有安装
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169196.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
6530
mysql聚合统计数据查询缓慢优化方案
随着业务发展,这些表会越来越大,如果处理不当,查询统计的速度也会越来越慢,直到业务无法再容忍。
宣言言言
2019/12/18
6.9K0
不想装系统,有没有办法在线体验 Linux?
另外,这次分享还有承上启下的作用。承上是前几天挺受大家欢迎的《Android 手机如何改造成 Linux 服务器?》,启下是想预告:从明天开始,我会在每次发文的次条加入“轻松掌握Linux命令”系列,希望从基础的命令开始,提升 Linux 技术水平,敬请期待!
Python猫
2019/11/12
4.8K0
问答 | 有没有什么办法让GPU显存不会溢出?
社长为你推荐来自 AI 研习社问答社区的精华问答。如有你也有问题,欢迎进社区提问。 话不多说,直接上题 问:有没有什么办法让GPU显存不会溢出? 来自社友的回答 ▼▼▼ @巴特莱•芬克: 通过谷歌大部分找到的就是 GPU 显存溢出。然后 加上 CUDA_VISIBLE_DEVICES=1 Environment Variable Syntax Results CUDA_VISIBLE_DEVICES=1 Onl
AI研习社
2018/09/25
1.2K0
MySQL查询:EHR中某时间范围过生日的员工
2、页面渲染的时候,默认出现近七天内要过生日的人。并发邮件提醒(发邮件提醒不在这里完成,是在其他模块,这里只描述如何查询生日的人)。
赵腰静
2018/12/29
3.2K0
MySQL查询:EHR中某时间范围过生日的员工
MySQL慢查询,一口从天而降的锅!
  记得那是一条查询SQL,数据量万级时还保持在0.2秒内,随着某一段时间数据猛增,耗时一度达到了2-3秒!没有命中索引,导致全表扫描。explain 中extra显示:Using where; Using temporary; Using filesort,被迫使用了临时表排序,由于是高频查询,并发一起来很快就把DB线程池打满了,导致大量查询请求堆积,DB服务器cpu长时间100%+,大量请求timeout。。最终系统崩溃。老板登场~
陈哈哈
2021/10/13
5930
简单几步,实现 Redis 查询 “附近的人”
来源:juejin.cn/post/6844903966061363207 作者简介:万汨,饿了么资深开发工程师。iOS,Go,Java均有涉猎。目前主攻大数据开发。喜欢骑行、爬山。 前言:针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高的运行效率。 本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。 要提供完整的“附近的人”服务,
程序猿DD
2022/09/15
6170
简单几步,实现 Redis 查询 “附近的人”
生日蜡烛
本文最后更新于 1163 天前,其中的信息可能已经有所发展或是发生改变。 #include<iostream> using namespace std; int sum=236; int dg(int i){ int temp=0; for(int j=i;temp<sum;j++){ temp+=j; if(temp==sum){ cout<<i<<endl; return 0; break; } } return 1; } int main(){ for(int
Yuyy
2022/06/28
6660
Oracle 按每天,每周,每月,每季度,每年查询统计数据
//按天统计 select count(dataid) as 每天操作数量, sum() from tablename group by trunc(createtime, 'DD')) //按自然周统计 select to_char(date,'iw'),sum() from tablename group by to_char(date,'iw') //按自然月统计 select to_char(date,'mm'),sum() from tablename group by to_cha
好派笔记
2021/11/02
1.5K0
Debian Linux 迎来 25 周岁生日,生日快乐!Debian
Debian 在开源领域拥有非常高的知名度和影响力,包括 Ubuntu 在内的诸多 GNU/Linux 系统都是基于 Debian 的。Debian 系统于 1993 年 8 月 16 日上线发布,因此今天 Debian 系统迎来历史上重要的里程碑时刻 --25 周岁生日。
用户6543014
2019/10/25
1.6K0
oralce 查询30天后生日 解决方案(解决跨年问题)
select PCC.INVNM custName, to_char(TO_DATE(pcc.BIRTHDAY, 'yyyyMMdd'),'yyyy/MM/dd') birthday from PRSP_CRM_CUSTINFO pcc where PCC.DELETE_FLG='0' <if test="isYears=='0'.toString()"> and to_char(TO_DATE(pcc.BIRTHDAY, 'yyyyMMdd'),'MMdd') >=
斯文的程序
2019/11/07
5560
select 统计数据
select e.emp_name workID, sum(case when i.status = 'New' THEN 1 ELSE 0 END) bugNum, sum(case when i.status = 'New' and i.serious_level like '%blocker%' THEN 1 ELSE 0 END) blocker, sum(case when i.status = 'New' and i.serious_level like '%major%' THEN 1 ELSE 0 END) major, sum(case when i.status = 'New' and i.serious_level like '%normal%' THEN 1 ELSE 0 END) normal
一个会写诗的程序员
2018/08/17
5360
网口调试步骤_万兆光口和千兆光口对接
1、 硬件配置,通过电阻上下拉确定;6096的硬件配置不可以错,其在port status寄存器状态中有相应的寄存器位体现硬件配置的工作模式。
全栈程序员站长
2022/09/30
3.2K0
网口调试步骤_万兆光口和千兆光口对接
密码学经典之生日悖论与生日攻击【详解】
生日悖论 在算法导论书上看到个比较有意思的概率算法,在这里加上自己的理解分享下: 上次刚看同学发的朋友圈说道:“两个人同一间宿舍,而且同年同月同日生,这个缘分真的是醉了”,当时我也是醉醉的,看了这个算法后才发现,屋里有23个人,那么就可以50%的概率生日是一样的。 是这样子证明的: 首先,假设屋子里有K个人,分别对他们编号1,2,3….k号。不考虑闰年的情况,那么一年就有n=365天,首先还是要假设生日是均匀分布在一年的n天中(喜欢在春天生就都在春天生这就不均匀了),然后还要假设两个人生日相互独立(什么
Angel_Kitty
2018/04/09
2.5K0
STM32串口打印输出乱码的解决办法
最近在试用uFUN开发板,下载配套的Demo程序,串口数据输出正常,当使用另一个模板工程,调用串口printf调试功能时,输出的却是乱码,最后发现是外部晶振频率不一样。很多STM32开发板都是使用的8M晶振,这个也是ST官方推荐的晶振频率,而且固件库默认是8M频率,倍频系数9。而uFUN开发板的晶振是和CH340共用一个12M晶振。如果固件库的参数不和硬件实际连接的晶振频率一致,那么不仅是串口会出现乱码,而且定时器这些也是不准确的,因为基本的工作时钟被打乱了。其实之前也遇到过这个问题,这次就算是记录一下吧!
单片机点灯小能手
2020/07/16
2.6K0
生日悖论matlab模拟
概率论课堂小作业 要求用matab模拟生日悖论 条件:30人||100次 本来想白嫖网上的解答 结果竟然找不到用matlab模拟仿真的 所幸不难 自己动手,也为后人铺路。 话不多说,直接上代码
zstar
2022/06/14
9150
生日悖论matlab模拟
1293: [SCOI2009]生日礼物
1293: [SCOI2009]生日礼物 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1096  Solved: 584 [Submit][Status] Description 小西有一条很长的彩带,彩带上挂着各式各样的彩珠。已知彩珠有N个,分为K种。简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置)。某些坐标上可以没有彩珠,但多个彩珠也可以出现在同一个位置上。 小布生日快到了,于是小西打算剪一段彩带送给小布。为了让礼物彩带足够漂亮,
HansBug
2018/04/10
8470
点击加载更多

相似问题

生日餐桌上最年长的人。SQL子查询

40

有没有办法让当地的人“脱身”?(Clojure)

20

有没有办法选择永久退出自动调整大小?

110

查找本周过生日的人的列表

50

查询在接下来的X天内生日的人的集合

64
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文