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

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

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

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

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

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

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

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

sql:

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

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,t1sex

FROM test t1

ORDER BY age

) AS tt

GROUP BY age

根据下面情况确定。

身份z号码的意义

①前1、2位数字表示:所在省份的代码,河南的省份代码是41哦!

②第3、4位数字表示:所在城市的代码;

③第5、6位数字表示:所在区县的代码;

④第7~14位数字表示:出生年、月、日;

⑤第15、16位数字表示:所在地的派出所的代码;

⑥第17位数字表示性别:奇数表示男性,偶数表示女性;

⑦第18位数字是校检码:也有的说是个人信息码,一般是随计算机随机产生,用来检验身份z的正确性。校检码可以是0~9的数字,有时也用x表示。

SELECT username, MAX((YEAR(NOW())- YEAR(出生日期))) AS age

FROM 表 GROUP BY username ORDER BY age DESC LIMIT 3

一句搞定

假设表student有如下字段:id,name,age,dormitory(宿舍号),语句可以如下写

select  from student where age>(

    select max(tage) from (

        select avg(age) age from student group by dormitory

    ) t

)

这个语句是我随手写的,没经过数据库验证,你自己先看一下,需要修改的地方自己稍加改动就行,大致差不多这样的

以上就是关于mysql计算表中性别为女的年龄之和全部的内容,包括:mysql计算表中性别为女的年龄之和、MYSQL中身份z号怎么确认出生日期和年龄、在mysql中怎样查询年龄最大的前3个学生年龄和姓名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9339850.html

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

发表评论

登录后才能评论

评论列表(0条)

保存