mysql 用一条sql按多个条件分组统计

示例:按年龄分组和性别统计人员

SELECT
	a.sex,
	a.nld AS ageGroup,
	count( 1 ) AS people 
FROM
	(
	SELECT
		td.sex,
	CASE
			
			WHEN td.age >= 18 
			AND td.age <= 30 AND td.sex = '1' THEN '18-30' WHEN td.age >= 18 
				AND td.age <= 30 AND td.sex = '2' THEN '18-30' WHEN td.age >= 31 
					AND td.age <= 40 AND td.sex = '1' THEN '31-40' WHEN td.age >= 31 
						AND td.age <= 40 AND td.sex = '2' THEN '31-40' WHEN td.age >= 41 
							AND td.age <= 50 AND td.sex = '1' THEN '41-50' WHEN td.age >= 41 
								AND td.age <= 50 AND td.sex = '2' THEN '41-50' WHEN td.age >= 51 
									AND td.age <= 55 AND td.sex = '1' THEN '51-55' WHEN td.age >= 51 
										AND td.age <= 55 AND td.sex = '2' THEN '51-55' WHEN td.age >= 56 
											AND td.age < 60 AND td.sex = '1' THEN '56-60' WHEN td.age >= 56 
												AND td.age < 60 AND td.sex = '2' THEN '56-60' WHEN td.age >= 60 
													AND td.sex = '1' THEN
														'60以上' 
														WHEN td.age >= 60 
														AND td.sex = '2' THEN
															'60以上' 
															END AS nld 
													FROM
														(
														SELECT
															m.sex,
															m.card_no,
															m.birth_date,
															FLOOR( PERIOD_DIFF( DATE_FORMAT( NOW(), '%Y%m' ), DATE_FORMAT( CONCAT( m.birth_date, '-01' ), '%Y%m' ))/ 12 ) AS age 
														FROM
															tb_cloud_member m
															LEFT JOIN tb_cloud_laborun l ON l.laborun_code = m.laborun_code
															LEFT JOIN tb_cloud_enterprises tce ON tce.id = m.unit_id 
															AND l.is_deleted = 0 
															AND tce.is_deleted = 0 
														WHERE
															1 = 1 
															AND m.is_deleted = 0 
															AND l.is_laborun = 1 
															AND m.is_new_occupation = 2 
															AND ( m.retirement_flag IS NULL OR m.retirement_flag = '' OR m.retirement_flag = '0' OR m.retirement_flag = '2' ) 
															AND (
																m.job_status IS NULL 
															OR m.job_status NOT IN ( 4, 5, 6 ))) td 
													) a 
												WHERE
													a.nld IS NOT NULL 
												GROUP BY
													nld,
												a.sex;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值