MySQL根据出生日期查询年龄,以及对年龄进行分组统计

该文展示了如何使用SQL查询从stu表中根据出生日期计算年龄,并按年龄区间进行统计。通过TIMESTAMPDIFF函数计算年龄,然后利用CASE或IF结构将年龄分组为不同的年龄段,最后使用GROUPBY进行统计计数。

表stu数据如下

1. 根据出生日期查询年龄

SELECT TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE())  AS age FROM stu;

返回结果:

函数DATE():提取日期或日期/时间表达式的日期部分;

函数CURDATE():返回当前的日期;

函数TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2):计算两个日期的时间差,unit是计算时间差的单位,可以是SECOND秒、MINUTE分钟、HOUR小时、DAY天、WEEK星期、MONTH月、QUARTER季度、YEAR年。
 

2.对年龄进行分组统计

1)case 结构

SELECT
	年龄段,count(*) 人数
FROM
	(
	SELECT
	CASE		
		WHEN TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE())<20 THEN	'20岁以下' 
		WHEN TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE()) >= 20 AND TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE()) <= 22 THEN	'20-22岁' 
		WHEN TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE()) >= 23 AND TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE()) <= 25 THEN	'23-25岁' 
		WHEN TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE())>25 THEN '25岁以上' 
		else '未知'
			END AS 年龄段
		FROM stu	
		) AS a 
GROUP BY 年龄段;

2)if结构

SELECT
	 年龄段,count(*) 人数
FROM
(
	SELECT
	IF(TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE())<20,'20岁以下',
		IF(TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE())>= 20 AND TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE()) <= 22,'20-22岁',
			IF(TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE())>= 23 AND TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE()) <= 25,'23-25岁',
			IF(TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE())>25,'25岁以上','未知'))))
			AS 年龄段
			FROM stu
)AS a
GROUP BY 年龄段;

返回结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值