oracle用sql语句实现年龄分段统计,case when then用法(用于分类统计)
sql 对一张表进行按照不同条件进行多次统计
在这里使用 case when then(多用于分类统计)
SELECT
CASE
WHEN age < 30 THEN
'30岁以下'
WHEN age BETWEEN 30
AND 35 THEN
'30-35岁'
WHEN age BETWEEN 36
AND 40 THEN
'36-40岁'
WHEN age > 40 THEN
'40岁以上'
END AS NAME,
count(*) AS count
FROM
(
SELECT
(
SELECT
to_number (to_char(sysdate, 'yyyy'))
FROM
DUAL
) - substr(csny, 0, 4) AS age
FROM
t_xwr_lz_grxx b,
t_xwr_sys_user c,
t_xwr_sys_dept d
WHERE
b.xm = c.user_id
AND c.dept_id = d.dept_id
AND (
SELECT
to_number (to_char(sysdate, 'yyyy'))
FROM
DUAL
) - substr(csny, 0, 4) IS NOT NULL
)
GROUP BY
CASE
WHEN age < 30 THEN
'30岁以下'
WHEN age BETWEEN 30
AND 35 THEN
'30-35岁'
WHEN age BETWEEN 36
AND 40 THEN
'36-40岁'
WHEN age > 40 THEN
'40岁以上'
END;
解释以下:
由于数据库里没有年龄字段,这里只能由 获取当年年份 - 出生年【oracle用sql语句实现年龄分段统计,case when then用法(用于分类统计)】结果如下所示
所有有了这个写法: 当年年份 - 出生年
(select to_number(to_char(sysdate, ‘yyyy’ )) from dual) - substr(csny,0,4) as age
文章图片
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- JS中的各种宽高度定义及其应用
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- 涉毒患者(新诗)
- 参保人员因患病来不及到指定的医疗机构就医,能否报销医疗费用()
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。