Mysql - 把数据根据区间分类 统计该区间的数量 ELt INTERVAL联合使用以及case ..when的运用

ELt INTERVAL联合使用 有一个缺点就是没有数据的那一个区间那个列就不会显示出来,0都不显示,后面就用了另外一种写法。

SELECT
        elt( INTERVAL ( a.age_diff,0,30, 35, 45, 50,60,65 ), '30岁以下', '30-35岁', '35-45岁','45-50岁','50-60岁','60-65岁','65岁以上') AS age_diff,
        count( a.id ) AS num
        FROM
        (
        SELECT
        id,
        ( SELECT CONVERT ( DATE_FORMAT( NOW( ), '%Y' ), SIGNED ) - a.YEAR + 0 ) AS age_diff
        FROM
        ( SELECT id, substring( sfzh, 7, 4 ) AS YEAR, YEAR ( NOW( ) ) FROM bs_dy GROUP BY zgxl ) a
        ) a
        GROUP BY
        elt( INTERVAL ( a.age_diff,0, 30, 35, 45, 50,60,65), '30岁以下', '30-35岁', '35-45岁','45-50岁','50-60岁','60-65岁','65岁以上' )

在这里插入图片描述

、SELECT
	aag.NAME as age_diff,
	count( a.namesa )  as num
FROM
	as_age_group aag
	LEFT JOIN (
SELECT
CASE
	
WHEN
	tab.age_diff BETWEEN 20 
	AND 25 THEN
	1 
WHEN tab.age_diff BETWEEN 25 
AND 45 THEN
2 
WHEN tab.age_diff BETWEEN 45 
AND 55 THEN
3 
END AS namesa 
FROM
	(
	SELECT
		id,
		( SELECT CONVERT ( DATE_FORMAT( NOW( ), '%Y' ), SIGNED ) - a.YEAR + 0 ) AS age_diff 
	FROM
		(
		SELECT
			id,
			substring( sfzh, 7, 4 ) AS YEAR,
			YEAR ( NOW( ) ) AS now 
		FROM
			bs_dy 
		GROUP BY
			zgxl 
		) a 
	) tab 
	) a ON a.namesa = aag.type 
GROUP BY
aag.NAME

case … when 和beteen and 结合使用的, 就可以吧米有数据的区间也显示出来。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值