【PostgreSql高阶语法 】1、CASE WHEN THEN END用法

1. 基础描述

  • 目的:在SQL语句中添加判断条件,就要用到CASE WHEN THEN END
  • 用法:类似于java里面的switch语句,一组CASE WHEN THEN END就是一条完整的字段,多条之间要使用逗号分隔开来;
  • 语法结构
	CASE 字段
	WHEN 条件1 THEN 做事赋值
	WHEN 条件2 THEN 做事赋值
	ELSE
		xxx
	END xxx;// 给结果字段重新起名
	CASE 
	WHEN 字段判断和条件1的关系 THEN 做事赋值
	WHEN 字段判断和条件2的关系 THEN 做事赋值
	ELSE
		xxx
	END xxx;

2. 用法举例

2.1 基础使用
2.1.1 方式1

数据库 student
在这里插入图片描述
使用sql语句:

SELECT
    sname,
    sage,
    ssex,
    CASE
        WHEN ssex = '1' THEN '男'
        WHEN ssex = '2' THEN '女'
        ELSE '其他'
    END  as sex
FROM
    student

查询结果:
在这里插入图片描述

2.1.2 方式 2

sql语句

SELECT
    sname,
    sage,
    ssex,
    CASE ssex
        WHEN '1' THEN '男'
        WHEN '2' THEN '女'
        ELSE '其他'
    END  as sex
FROM
    student

查询结果与上述一致

2.2 进行分组
  • 原数据库:
    在这里插入图片描述
  • 目的:按照国家进行男女数量分别统计
  • sql语句:
SELECT
	country,
	SUM ( CASE WHEN sex = '1' THEN amount ELSE 0 END ) AS,
	SUM ( CASE WHEN sex = '2' THEN amount ELSE 0 END ) ASFROM	
	world
GROUP BY
	country
  • 统计结果
    在这里插入图片描述
2.3 分组练习举例
  • 数据库:国家
    在这里插入图片描述
  • 目的:统计亚洲、北美洲以及其他州的人口数量
  • 结果概览
    在这里插入图片描述
  • sql语句
SELECT  
	SUM(population) AS 人口, 
	CASE   
		WHEN country in('中国','印度','日本') THEN '亚洲'
		WHEN country in('美国','加拿大','墨西哥') THEN '北美洲'
		ELSE '其他' 
	END ASFROM    
	国家 
GROUP BY
	CASE   
		WHEN country in('中国','印度','日本') THEN '亚洲' 
		WHEN country in('美国','加拿大','墨西哥') THEN '北美洲' 
		ELSE '其他' 
  	END 
  • 结果
    在这里插入图片描述
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: PostgreSQL中的CASE WHEN语法是一种条件表达式,它允许您在查询中根据条件执行不同的操作。它的基本语法如下: CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END 其中,condition1、condition2等是条件表达式,result1、result2等是对应条件的结果,default_result是当所有条件都不满足时的默认结果。您可以在查询中使用CASE WHEN语法来实现各种复杂的逻辑操作,例如根据不同的条件计算不同的值或者对查询结果进行分类汇总等。 ### 回答2: PostgreSQL是一个功能强大的关系性数据库管理系统,它提供了各种语言结构和功能来方便用户进行各种操作。其中一个非常有用的函数是CASE WHEN语法。这个语法具有如下的基本结构: ``` CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE resultN END; ``` 在这个结构中,每一个WHEN子句都包含一个条件和一个结果,如果条件为真,则执行相应的结果。ELSE子句则是所有WHEN子句都不为真时执行的结果。在 CASE WHEN语法中,条件可以是任何表达式、函数、操作符、子查询或组合。它可以根据需要使用逻辑运算符(例如AND/OR)进行连接。 下面是一些CASE WHEN语法的实际应用: 1.计算评级 通过以下代码,可以计算每位员工的评级: ``` SELECT id, name, CASE WHEN score >= 90 THEN '优秀' WHEN score >= 80 THEN '良好' WHEN score >= 70 THEN '中等' ELSE '不及格' END AS rating FROM employees; ``` 2.按条件过滤数据 可以按某一条件过滤数据: ``` SELECT name, job_title, CASE WHEN salary >= 80000 THEN '薪' ELSE '低薪' END AS salary_rating FROM employees WHERE job_title = '经理'; ``` 3.计算年终奖金 以下代码计算每位员工的年终奖金: ``` SELECT id, name, CASE WHEN length_of_service >= 5 THEN 10000 WHEN length_of_service >= 3 THEN 5000 ELSE 0 END AS bonus FROM employees; ``` 在上面的例子中,使用了WHEN子句中的数字作为结果,但它也可以是任何有效的表达式、函数或操作符。 总之,CASE WHEN语法PostgreSQL中非常有用和灵活的语言结构之一。它可以根据需要支持多个WHEN子句,并可以根据条件执行不同结果。此外,它还可以与其他函数和操作符结合使用。对于许多数据操作和计算,CASE WHEN语法都是非常有用的工具。 ### 回答3: PostgreSQLcase when语法是一种条件语句,用于在查询中根据条件返回不同的值。通常,这种语法包含以下元素: 1. case:定义一个case表达式,用于指定将要检查的条件。 2. when:对于满足条件的情况,定义要执行的操作。 3. then:指定操作的结果。 4. else:对于没有任何条件匹配的情况,定义要执行的操作。 5. end:结束case表达式。 以下是对这些元素的详细解释: 1. case表达式:case表达式是一个条件语句,其语法如下: CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... WHEN conditionn THEN resultn ELSE result END; 在这个表达式中,可以定义多个when条件,每个条件都可以有不同的结果。如果条件不匹配,则可以触发else条件。 2. when条件:when条件用于指定一个条件,在满足条件时执行相应的操作。例如: CASE WHEN age > 30 THEN '老年' WHEN age > 20 THEN '中年' ELSE '青年' END; 在这个例子中,case表达式对年龄进行条件判断,如果年龄大于30岁,则返回‘老年’,如果年龄大于20岁,则返回‘中年’,否则返回‘青年’。 3. then结果:在when条件匹配时,要执行的结果。结果可以是一个值、一个表达式、一个函数等。 4. else条件:当没有任何when条件匹配时,执行的操作。可以在else条件中指定最后的操作。 总的来说,case when语法是非常灵活的条件语句,可以根据查询需要进行灵活定制。使用case when语法可以避免繁琐的if-else语句,使查询语句更简洁明了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大龄烤红薯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值