mysql年龄段统计_怎么分年龄段查询、统计?
你的位置:
问答吧
-> PHP基础
-> 问题详情
怎么分年龄段查询、统计?
人员的资料中有“出生日期”字段,问:
如何按照每5年为一个区间去查询统计人员数据?
我初步只能想到,先把所有记录都取出来,然后对每条记录遍历,计算岁数然后对应的年龄段+1。
可是这样效率比较低。请问用SQL有可能实现吗?
作者: diekiss
发布时间: 2006-06-07
每五年一个段,那起始年月呢???最好别取出来再过滤,直接让数据库计算
作者: sunjava
发布时间: 2006-06-07
这个感觉无论怎么分执行效率肯定很低
作者: 蟋蟀
发布时间: 2006-06-08
请问楼主想干啥.或许有别的办法.
作者: 游戏人间
发布时间: 2006-06-08
SELECT Year(`birthday`) x, FLOOR(Year(`birthday`)/5) AS y,birthday,sid FROM `user` WHERE birthday>0 order by y
或者
SELECT FLOOR( Year( `birthday` ) /5 ) AS y, birthday, sid
FROM `user`
WHERE FLOOR( Year( `birthday` ) /5 ) = FLOOR( 1990 /5 )
[ 本帖最后由 纯粹误会 于 2006-6-8 02:36 AM 编辑 ]
作者: 纯粹误会
发布时间: 2006-06-08
我不知道相同的运算,php和mysql哪个效率更高一些
作者: sanders_yao
发布时间: 2006-06-08
计算工龄么?
作者: zjhcloth
发布时间: 2006-06-08
CODE:
[Copy to clipboard]
$result = mysql_query("select year(`date`),count(*) from database.table group by year(`date`)");
while($row = mysql_fetch_row($result)){
!isset($year_start) && $year_start = $row[0];
if($row[0]
$nums[$year_start] += $row[1];
}else{
do{
$year_start += 5;
$nums[$year_start] = 0;
}while($year_start <= $row[0]-5);
$nums[$year_start] += $row[1];
}
}
?>[ 本帖最后由 沉默的狼 于 2006-6-8 01:38 PM 编辑 ]
作者: 沉默的狼
发布时间: 2006-06-08
year('date') 的算法似乎不是很准确,例如现在是6月,那么1月的和12月出生的人就相当于没相差了,与现实不符。
我现在做的是就业信息服务方面的软件,需要对求职人做一个统计,计算出21-25,26-30,31-35,36-40,41-450.... 如此类推的分段统计
作者: diekiss
发布时间: 2006-06-08
把year(`date`)换成year(date_add(`date`,interval 180 day))不就可以了吗?
如果要计算岁数可以把$nums[$year_start] 改成$nums[date("Y")-$year_start]
[ 本帖最后由 沉默的狼 于 2006-6-8 04:30 PM 编辑 ]
作者: 沉默的狼
发布时间: 2006-06-08
CODE:
[Copy to clipboard]
$year_start = 1901;
$thisyear = date("Y");
$thisday = date("z");
$result = mysql_query("select year(date_add(`date`,interval $thisday day)),count(*) from database.table group by year(date_add(`date`,interval $thisday day))");
while($row = mysql_fetch_row($result)){
!isset($year_start) && $year_start = $row[0];
if($row[0]
$nums[$thisyear-$year_start] += $row[1];
}else{
do{
$year_start += 5;
$nums[$year_start] = 0;
}while($year_start <= $row[0]-5);
$nums[$thisyear-$year_start] += $row[1];
}
}
?>[ 本帖最后由 沉默的狼 于 2006-6-8 04:48 PM 编辑 ]
作者: 沉默的狼
发布时间: 2006-06-08
天数还可以实时算出来
[ 本帖最后由 沉默的狼 于 2006-6-8 04:43 PM 编辑 ]
作者: 沉默的狼
发布时间: 2006-06-08
1、只year(date)/5 的算法是错误的,因为这样只计算出date归属于哪个5年组。而楼主要求的是年龄组。比如24岁今年归属20-24岁组,明年就归属25-29岁组。因此就需要在计算中引入当前时间
floor((year(now())-year(date))/5)*5
2、考虑到年龄应按周岁计算,所以需要出生年做一个校正
已知函数DAYOFYEAR(date) 返回date在一年中的日数, 在1到366范围内。
那么dayoyear(now())-dayofyear(date) 若为负值则生日未到,应少记一岁
所以出生年应写做if(dayoyear(now())-dayofyear(date)<0, year(date)+1, year(date))
3、把2式代入1式,并作为分组依据
4、不保证所用函数在其他数据库中可用
5、要通用时,应提出数据用php计算
6、使用php计算要慢于数据库计算。理由很简单,数据库计算后只返回数条结果;php计算时需要先获得全部数据,可能成千上万。至少交换数据的时间就要多很多了
7、注意:在使用php进行计算时不能做分组处理,以免丢失相关数据
作者: 唠叨
发布时间: 2006-06-08
版主分析得很好。我还要研究一下,因为项目用MySQL4,所以有些函数不能用
作者: diekiss
发布时间: 2006-06-19
在MySQL的手册 3.3.4.5. Date Calculations 是这样就计算年龄的:
mysql> SELECT name, birth, CURDATE(),
-> (YEAR(CURDATE())-YEAR(birth))
-> - (RIGHT(CURDATE(),5)
-> AS age
-> FROM pet;
作者: diekiss
发布时间: 2006-06-19
1、我示例的函数在mysql4.0.1就可以使用了
2、楼主示例的代码确实很简练
要点: (RIGHT(CURDATE(),5)
巧妙的利用了布尔值进行运算
注意:CURDATE()和NOW()是一样的
作者: 唠叨
发布时间: 2006-06-19
CURDATE 输出格式 ‘YYYY-MM-DD'
NOW() 输出格式 'YYYY-MM-DD HH:MM:SS'
如果用RIGHT运算,二者就有差别了
作者: diekiss
发布时间: 2006-06-19
不是还有substr吗
作者: 唠叨
发布时间: 2006-06-19
mysql年龄段统计_怎么分年龄段查询、统计?相关推荐
- dblink查询_分库数据如何查询统计
分库后的计算不能直接使用SQL:异构库 SQL 函数不尽相同:JAVA 硬编码实施难度大:即使借助透明网关访问远程数据库,分库性能优化也是头疼问题. 一般常规办法: 方法1:java硬编码 简单的跨库 ...
- php返回mysql错误语句_[已解决]php查询mysql返回了错误的结果
大约是不支持中文字符的原因:将mysql的所有属性都改成英文字符之后,使用mysql好了. 但是! 用mysqli写 还是会返回空(又测了下,密码框不输入或输入0都会得到登录成功的提示) 都明白了 r ...
- mysql动态扩展_动态可扩展查询MYSQL5.7JSON+虚拟列+Mybatis
背景:现有业务扩展字段,都存在feature字段,存在语义不清晰以及,难以利用索引查询问题 Mysql 5.7后推出利器,JSON+虚拟列,即实现了业务语义统一,也支持索引查询加速 一.简单描述 My ...
- mysql全文索引含义_【分针网】MySQL全文索引应用简明教程
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本文从以下几个方面介绍下MySQL全文索引的基础知识:1.MySQL全文索引的几个注意事项2.全文索引的语法3.几种搜索类型的简介4.几种搜索类型的实例 ...
- mysql分库一致性_分库分表带来的完整性和一致性问题
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在最近做的一个项目中,由于每天核算的数据量过于庞大,需要把数据库进行分库保存.当数据 ...
- mysql查库存_如何用SQL查询Product表中库存最低的6种商品
展开全部 使用代码:复 DELETE的语法是制: DELETEFROMtable_name. WHERE条件. DELETE后面不跟列名.2113 INSERT一般都用: INSERTINTOtabl ...
- java mongo分组统计_探秘 Dubbo 的度量统计基础设施 - Dubbo Metrics
对服务进行实时监控,了解服务当前的运行指标和健康状态,是微服务体系中不可或缺的环节.Metrics 作为微服务的重要组件,为服务的监控提供了全面的数据基础.近日,Dubbo Metrics 发布了2. ...
- 地图统计_博客 城市访问量统计并且通过Echarts+百度地图展示
本篇讲解一下 如何在Vue 中使用 Echarts + 百度地图 统计 博客访问量 并且通过QQWry 解析 ip 地址 利用Echarts 展示出来 效果图如下: 1.纯真Ip地址库 QQWry 这 ...
- linux 统计_聊聊 Linux 的内存统计
写在前面 本文主要分析 Linux 系统内存统计的一些指标以及进程角度内存使用监控的一些方法. 开始阅读这篇文章前,请先简单阅读下面的几篇文章. <进程眼中的线性地址空间> <线程眼 ...
最新文章
- 最长回文子串--马拉车(?)
- PostgresSQL生成UUID
- linux下使用automake、autoconf生成configure文件
- 缓冲流、转换流、序列化流
- 南京php培训班哪家,南京PHP培训中心哪家比较专业
- 伦敦银行 如何计算利息
- 剑指offer 栈的压入、弹出序列
- mw315r 虚拟服务器,水星MW315R桥接设置教程
- anaconda安装好tensorflow后,无法在jupyter notebook上使用的解决方法
- GoPro 8及旗下首款360全景运动摄像机HERO Max将发售
- 中职计算机英语课件ppt,语文版中职英语(基础模块 上册)Unit 7《Computers》ppt课件1.ppt...
- Linux学习:curl 与 wget命令
- win下MySQL 8.0.11 修改密码、开启远程访问
- 使用CSS来美化你的javafx滚动条
- linux的防火墙端口配置
- [渝粤教育] 新乡医学院 医学微生物学 参考 资料
- 外网远程访问群晖NAS,内网穿透
- IDEA java类文件左下角出现橙红色的圆形小标识
- 瞎猫碰死耗子解决You are using pip version 9.0.1,however version 22.1.2 is available.You should consider upgr
- VTK笔记-CT图像获取皮肤等值面-vtkContourFilter类的使用