`
thomas01042003
  • 浏览: 15263 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle中CASE WHEN的用法实例

 
阅读更多
 
  实例演示:

  (1)查询表users中的数据。

  select u.id,u.realname,U.SEX from users u;

  查询结果如下

  ID    REALNAME SEX
  1  10082 松XX
  2  10084 林XX     1
  3  10087 西XX
  4  10100 胡XX
  5  10102 龙XX     1
  ......

  (2)上表结果中的"sex"是用代码表示的,希望将代码用中文表示。可在语句中使用CASE语句。

select u.id,u.realname,U.SEX,
  ( case u.sex
  when 1 then '男'
  when 2 then '女'
  else '空的'
  END
  ) 性别
from users u;


  查询结果

  ID    REALNAME SEX  性别
  1 10082 松XX         空的
  2 10084 林XX     1   男
  3 10087 西XX         空的
  4 10100 胡XX         空的
  5 10102 龙XX     1   男
  ......

  如果不希望列表中出现"sex"列,语句如下

select u.id,u.realname,
( case u.sex
when 1 then '男'
when 2 then '女'
else '空的'
END
) 性别
from users u;


  (3)将sum与case结合使用,可以实现分段统计。

  例如现在我希望将上表中各种性别的人数进行统计,sql语句如下

select
sum( case u.sex when 1 then 1 else 0 end) 男性,
sum( case u.sex when 2 then 1 else 0 end) 女性,
sum( case when u.sex<>1 and u.sex<>2  then 1 else 0 end) 性别为空
from users u;


  执行结果如下

  男性  女性  性别为空
  1 41    15   0

  如果学校内有数千名学生进行了考试,想统计60分以下、60-80分、80-100分的总人数,就可以使用这样的语句来实现。只是条件不同而已。

  (4)如果sum、case when结合group by使用,可以进行分组分段统计。

  如,我希望统计users表中每个创建者创建的男性、女性、无性别的用户总数(数据表中有一个字段creator_id,表示创建者的ID),语句如下

select u.creator_id 创建者ID,
sum( case u.sex when 1 then 1 else 0 end) 男性,
sum( case u.sex when 2 then 1 else 0 end) 女性,
sum( case when u.sex<>1 and u.sex<>2  then 1 else 0 end) 性别为空
from users u
group by u.creator_id;


  查询结果如下

  创建者ID 男性 女性 性别为空
  1          0    0   0
  2 10000    35   12  0
  3 11100    0    0   0
  4 11060    0    0   0
  5 11040    0    0   0
  6 11080    2    0   0
  7 10281    3    3   0
  8 10580    1    0   0

  上例中只有一个分组字段,实现了1级统计;如果有多个分组字段,应该可以实现多级统计了。如有居民统计表,保存了人口信息、人口所在市、区、街道信息等,欲统计深圳市的人口数据,实现统计如下统计结果的话,就可以通过多级分组实现。

  区划    男性居民     女性居民
  深圳市            
  南山区           
  粤海           
  科技           
  宝安区           
  新安           

  (5)case when的语法

CASE
WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE>
END


分享到:
评论

相关推荐

    Oracle的几个Function实例

    在"Oracle的几个Function实例"这个主题中,我们将探讨一些常见的Oracle函数,并通过实际示例来理解它们的用法。 1. ** NVL 函数**: NVL函数用于处理空值(NULL)。如果一个字段的值为NULL,NVL函数会将其替换为你...

    oracle SQL优化实例

    ### Oracle SQL优化实例详解 #### 一、减少I/O操作 在Oracle数据库中,I/O操作通常是查询执行过程中最耗时的部分之一。因此,减少I/O操作可以显著提高查询性能。 **示例代码:** ```sql SELECT COUNT(CASE WHEN ...

    Oracle中SQL语句行列之间相互转换

    ### Oracle中SQL语句行列之间的相互转换 在Oracle数据库中,有时我们需要将表格中的行转换为列或将列转换为行,这种操作被称为行列转换。这种转换对于数据分析、...在实际应用中,应根据具体情况选择合适的转换方法。

    几个常用的Oracle函数及实例运用

    ### 常用Oracle函数及实例解析 #### 一、引言 在Oracle数据库中,提供了丰富的内置函数来处理各种数据类型的操作需求。这些函数能够极大地简化开发人员的工作,并提高SQL查询的效率。本文将详细介绍几个常用Oracle...

    Oracle高级操作函数学习笔记

    以下是从标题、描述和部分内容中提取的Oracle高级操作函数的知识点。 ### 分支判断函数 #### DECODE函数 DECODE函数是Oracle中的一个条件分支函数,它的功能类似于编程语言中的if-else if-else语句。DECODE函数的...

    Oracle自动备份存储过程脚本及过程详解

    本文将详细介绍如何通过编写SQL脚本来自动备份Oracle中的存储过程,并结合批处理文件和任务计划程序来实现自动化操作。 #### 二、创建SQL脚本 首先,我们需要创建一个SQL脚本来获取存储过程的定义并将其保存为文本...

    oracle函数大全及知识点api

    CASE WHEN column_name &gt; 10 THEN '大于10' ELSE '小于等于10' END AS "条件判断" FROM table_name; ``` 这段SQL展示了如何在查询中使用日期时间、字符串和逻辑判断函数。 总结,Oracle函数和API是数据库操作的...

    oracle存储过程学习经典[语法+实例+调用]

    在实际应用中,我们可能会遇到调用存储过程的情况。对于Java开发者,可以使用JDBC的CallableStatement来调用Oracle存储过程。以下是三种常见情况的示例: 1. 无返回值的存储过程: ```java CallableStatement cs = ...

    oracle源代码

    Oracle源代码是一个包含大量示例代码的集合,用于帮助学习和理解Oracle数据库系统的工作原理以及如何在实际项目中应用其功能。这些代码片段通常涵盖了Oracle的SQL查询、PL/SQL编程、数据库管理、性能优化等多个方面...

    Oracle存储过程学习经典[语法+实例+调用].

    ### Oracle存储过程学习经典知识...通过以上内容的学习,我们可以了解到Oracle存储过程的基础概念、基本语法及其在实际开发中的应用技巧。无论是对于初学者还是有一定经验的开发者来说,掌握这些知识点都是非常重要的。

    Oracle 大小写转换函数实例详解

    Oracle提供了几个内置的函数来实现这些转换,本篇文章将详细讲解这些函数的用法,并通过实例进行演示。 1. `UPPER()` 函数: `UPPER()` 是Oracle中的一个函数,用于将字符串中的所有字符转换为大写。例如,如果你有...

    Sql,oracle数据表行转列问题

    在SQL Server 2000中,我们可以使用CASE WHEN语句和MAX聚合函数来实现行转列操作。下面是一个示例代码: ```sql select 姓名 as 姓名, max(case 课程 when '语文' then 分数 else 0 end) 语文, max(case 课程 ...

    ORACLE复习资料

    Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它提供了...记得在实践中不断探索,理解和掌握每个命令的用法,同时注意数据库性能优化和事务管理等关键概念,以提升你在Oracle数据库领域的专业能力。

    oracle触发器

    ### Oracle触发器详解 在Oracle数据库管理中,触发器是一种非常强大的工具,它允许你在特定的数据库事件(如数据插入、更新或删除)发生时自动执行预...因此,在实际应用中,开发者应谨慎考虑触发器的设计和实施策略。

    Oracle例外用法实例详解

    以下是对Oracle异常用法的详细解释。 首先,异常被分为三大类: 1. 预定义异常:这是Oracle为常见的错误预先定义的异常,如NO_DATA_FOUND、TOO_MANY_ROWS等。当PL/SQL代码遇到这些预定义错误时,系统会自动抛出...

    oracle从入门到精通.pdf

    - **条件表达式**:如DECODE(), CASE WHEN THEN ELSE END等,用于实现更复杂的逻辑判断。 **1.8 使用函数产生的总计** - **聚合函数**:如COUNT(), SUM(), AVG()等,用于统计分析。 **1.9 子查询** - **子查询...

    Oracle函数(chm)

    - `CASE WHEN THEN` 结构:提供更复杂的条件判断和值映射。 5. **聚合函数**: - `COUNT()`: 计算行数。 - `SUM()`: 求和。 - `AVG()`: 计算平均值。 - `MAX()`, `MIN()`: 找到最大值和最小值。 6. **连接和...

    oracle异常处理

    Oracle 异常处理是 PL/SQL 编程中不可...通过这些方法,Oracle 开发者能够有效地管理程序中的错误,确保应用程序在遇到异常时能够优雅地恢复,而不是突然崩溃。异常处理是编写健壮、可靠的 PL/SQL 代码的关键组成部分。

    韩顺平oracle视频笔记

    - **性能**:Oracle通常被认为在大规模企业级应用中有较好的表现。 - **安全性**:Oracle提供了强大的安全功能,如细粒度访问控制、数据加密等。 - **易用性**:虽然功能强大,但相比其他数据库,学习曲线可能更陡峭...

    oracle的decode函数

    #### 四、DECODE函数的应用实例 为了更好地理解`DECODE`函数的使用方法,我们来看一个具体的例子。假设有一个名为`checkup`的表,其中包含`checkup_type`和`blood_test_flag`两个字段,`blood_test_flag`用于标识...

Global site tag (gtag.js) - Google Analytics