mysql计算表中性别为女的年龄之和

mysql计算表中性别为女的年龄之和,第1张

终于暂时闲下来了,一个项目加班加点一年多,前面太忙就顾不上博客了,慢慢的就懈怠了,最近算是暂时闲下来了,项目已经验收进入后期维护阶段,每天空余的时间也多了,想重新拾起博客,不求写什么高深的东西,以后就尽量就每次自己遇到的问题,并把解决方法在这里记录一下,可能显得很简单不适合他人看,但是就当自己日记一样记录还是不错的,因为在这个项目里我有好几次遇到类似的以前解决过的问题,却还是要看了自己当初的百度提问才得以解答,还是要记录下比较好。

这次要记录的是昨天客户找我要一个关于注册用户年龄段,性别分布情况,当时把我卡住了,等到解决了才发现其实这个sql我大二考试的时候就写过,只是把以前是班级现在是年龄,以前是sqlserver现在是mysql而已,话不多说,解决过程如下:

首先,是我们数据库的当前内容:

然后我们要给他最终统计成三个字段:年龄男女

需要的最终统计结果图如下:

步骤1:我们要把先他统计成 年龄,性别 的结果

sql:

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age,t1.sex

FROM test t1

ORDER BY age

其结果如下:

步骤2:将上图的结果作为临时表,再统计成最终结果图

sql:

SELECT CONCAT(age,'岁') AS '年龄',SUM(CASE WHEN sex='男' THEN 1 ELSE 0 END) AS '男',SUM(CASE WHEN sex='女' THEN 1 ELSE 0 END) AS '女'

FROM

(

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age,t1.sex

FROM test t1

ORDER BY age

) AS tt

GROUP BY age

报错是因为 没有这个方法

可能的原因是 1 方法是自定义的 你当前数据库中没有写入这个方法

2 这个方法是官方的但是 版本号不同 这个方法被取消了

解决的方法 1 写入这个方法调用 2 更换 对应版本的 mysql

create table 学生表(学号 char(10) primary key,姓名 char(10) not null,性别 char(2) check(性别 in('男','女')),系 varchar(20) check(系 in('信息系','计算机科学系','数学系','管理系','中文系','外语系','法学系')),年龄 int check(年龄 between 0 and 100))


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6100226.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存