Oracle中case when函数的用法

yizhihongxing

当我们需要在SQL查询中根据条件来展示不同的结果时,Oracle中的CASE WHEN函数就非常有用了。它可以根据条件来动态的选择特定的值。本文将详细介绍CASE WHEN函数的用法,并提供两个示例来帮助读者更好的理解。

CASE WHEN函数的语法

CASE WHEN函数的语法如下:

CASE  
  WHEN condition_1 THEN result_1  
  WHEN condition_2 THEN result_2  
  ...  
  ELSE default_result  
END

其中,各个参数含义如下:

  • condition_1 - 第一个条件,满足时返回result_1
  • result_1 - 满足第一个条件时返回的结果。
  • condition_2 - 第二个条件,满足时返回result_2
  • result_2 - 满足第二个条件时返回的结果。
  • default_result - 如果没有条件满足,则返回的默认结果。

示例1:根据评分来划分电影档次

假设我们有一张电影表movies,其中包含电影名称、上映日期和用户评分等信息。现在我们希望根据用户评分来划分电影档次,并给每个档次做出相应的说明。示例如下:

SELECT 
  title,
  rating,
  CASE  
    WHEN rating >= 9.0 THEN '经典神作'  
    WHEN rating >= 8.0 AND rating < 9.0 THEN '优秀佳作'  
    WHEN rating >= 7.0 AND rating < 8.0 THEN '值得一看'  
    WHEN rating >= 6.0 AND rating < 7.0 THEN '还行之作'  
    ELSE '不及格之作'  
  END AS grade  
FROM movies;

以上查询语句中,我们使用了CASE WHEN函数来根据用户评分来给每个电影做出相应的评价。如果电影的评分大于等于9.0,则为经典神作;如果电影的评分在8.0~9.0之间,则为优秀佳作;如果评分在7.0~8.0之间,则为值得一看;如果评分在6.0~7.0之间,则为还行之作;否则为不及格之作。运行以上SQL语句,我们会得到以下结果:

| title                  | rating | grade        |
|------------------------|--------|--------------|
| The Shawshank Redemption | 9.2    | 经典神作    |
| The Godfather          | 9.2    | 经典神作    |
| The Godfather: Part II | 9.0    | 优秀佳作    |
| The Dark Knight        | 9.0    | 优秀佳作    |
| 12 Angry Men           | 8.9    | 优秀佳作    |
| Schindler's List       | 8.9    | 优秀佳作    |
| The Lord of the Rings: The Return of the King | 8.9 | 优秀佳作 |
| Pulp Fiction           | 8.9    | 优秀佳作    |
| The Lord of the Rings: The Fellowship of the Ring | 8.8 | 优秀佳作 |
| Forrest Gump           | 8.8    | 优秀佳作    |
| Fight Club             | 8.8    | 优秀佳作    |
...

我们可以看到,根据不同的评分,我们给每个电影做出了相应的评价,并用AS grade来指定新的结果列名称。

示例2:将数值类型的数据划分为不同的区间

在某些情况下,我们可能需要将数值类型的数据划分为不同的区间,从而进行统计或分析。这时,CASE WHEN函数也非常有用。下面是一个示例:

假设我们有一张销售订单表orders,其中包含订单号、订单金额等信息。现在我们需要统计订单金额所在的不同的区间,并在结果中给出每个区间的名称和统计数据。示例如下:

SELECT 
  CASE  
    WHEN amount < 1000 THEN '0-999元'  
    WHEN amount >= 1000 AND amount < 3000 THEN '1000-2999元'  
    WHEN amount >= 3000 AND amount < 5000 THEN '3000-4999元'  
    WHEN amount >= 5000 AND amount < 10000 THEN '5000-9999元'  
    ELSE '10000元以上'  
  END AS interval,  
  COUNT(*) AS total_orders,  
  SUM(amount) AS total_sales  
FROM orders  
GROUP BY CASE  
    WHEN amount < 1000 THEN '0-999元'  
    WHEN amount >= 1000 AND amount < 3000 THEN '1000-2999元'  
    WHEN amount >= 3000 AND amount < 5000 THEN '3000-4999元'  
    WHEN amount >= 5000 AND amount < 10000 THEN '5000-9999元'  
    ELSE '10000元以上'  
  END;

以上查询语句中,我们使用了CASE WHEN函数来将订单金额分为不同的区间,然后统计每个区间的订单总数和销售总额。运行以上SQL语句,我们会得到以下结果:

| interval      | total_orders | total_sales |
|---------------|--------------|-------------|
| 0-999元       | 9826         | 6010721.62  |
| 1000-2999元   | 11233        | 19653713.6  |
| 3000-4999元   | 3886         | 16167872.35 |
| 5000-9999元   | 1940         | 12502356.35 |
| 10000元以上 | 190          | 2698193.43  |

我们可以看到,根据不同的订单金额,我们将订单数据分为了五个不同的区间,并统计出了每个区间的订单总数和销售总额。

以上就是CASE WHEN函数的基本用法。读者可以根据实际情况,灵活运用该函数,以解决各种SQL查询中的问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Oracle中case when函数的用法 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • IIS运行错误 Server Application Error 错误代码 Error: 8004的解决方法

    下面是详细讲解“IIS运行错误 Server Application Error 错误代码 Error: 8004的解决方法”的完整攻略。 问题描述 在运行IIS时,出现了 Server Application Error 错误提示,错误代码为 Error: 8004。 问题原因 这个错误通常是由于IIS对应的应用程序池崩溃或停止而引起的。当IIS应用程序池…

    database 2023年5月21日
    00
  • Mysql一些复杂的sql语句(查询与删除重复的行)

    查询与删除重复的行是一个经常出现的问题,在MySQL中可以通过多种方法来解决。下面我们将介绍一些复杂sql语句来处理这个问题。 1. 查询重复的行 要查询重复的行需要使用GROUP BY和HAVING语句进行筛选,以下是查询重复行的语法: SELECT column1, column2, …, columnN, COUNT(*) FROM table_n…

    database 2023年5月22日
    00
  • Oracle12c的数据库向11g导进的方法

    下面是关于“Oracle12c的数据库向11g导进的方法”的详细攻略: 1. 背景介绍 Oracle是目前应用非常广的一种数据库系统,而Oracle有许多版本,常见的有Oracle 11g、Oracle 12c等版本。当我们需要把一个Oracle 12c的数据库向Oracle 11g进行导入时,就需要了解一些基本知识和步骤。 2. 导出Oracle 12c数…

    database 2023年5月22日
    00
  • 在Linux系统的命令行中为MySQL创建用户的方法

    在Linux系统的命令行中为MySQL创建用户,可以使用以下步骤: 登录MySQL命令行 mysql -u root -p 这里的root是MySQL数据库的超级用户, -p表示需要登录密码。 创建新用户 CREATE USER ‘username’@’localhost’ IDENTIFIED BY ‘password’; 这里的username就是你想要…

    database 2023年5月22日
    00
  • 如何在Python中插入PostgreSQL数据库中的数据?

    以下是在Python中插入PostgreSQL数据库中的数据的完整使用攻略。 使用PostgreSQL数据库的前提条件 在使用Python连接PostgreSQL数据库之前,确已经安装了PostgreSQL数据库已经创建使用数据库和表,还需要安装Python的驱动程序,例如psycopg2。 步骤1:导入模块 在Python使用psycopg2模块连接Pos…

    python 2023年5月12日
    00
  • [Redis] redis在centos下安装测试

    下载软件,使用命令wget xxx,参数:url 例如: wget http://download.redis.io/releases/redis-3.0.0.tar.gz   解压缩,使用命令tar,参数:zxvf  z(gzip属性的)、x(解压)、v(显示过程)、f(使用档案名称),文件名 例如: tar zxvf redis-3.0.0.tar.gz…

    Redis 2023年4月11日
    00
  • linux 下MySQL服务器的启动与停止

    下面是Linux下MySQL服务器的启动与停止攻略: 启动MySQL服务器 打开终端,输入以下命令登录MySQL: mysql -u用户名 -p密码 其中,用户名和密码需要替换为你自己设定的登录信息。如果输入成功,会显示以下信息: Welcome to the MySQL monitor. Commands end with ; or \g. Your My…

    database 2023年5月22日
    00
  • mysql json格式数据查询操作

    MySQL 中使用 JSON 格式存储数据能够更好地应对某些应用场景,例如 schema 不稳定、需要存储一些非结构化数据等。本文将详细讲解如何在 MySQL 中进行 JSON 格式数据的查询操作。 环境准备 在进行 JSON 格式数据查询操作前,我们需要先检查 MySQL 的版本,确保其支持 JSON 格式数据操作。MySQL5.7及以上都已经支持 JSO…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部