在Oracle中,您可以使用CASE
语句来创建条件表达式。CASE
语句允许您根据一个或多个条件对数据进行分类,并返回相应的值。以下是一个基本的CASE
语句的语法:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END;
在这个结构中:
condition1
, condition2
, … 是要测试的条件。result1
, result2
, … 是当条件为真时返回的值。default_result
是当所有条件都为假时返回的值。下面是一个具体的例子。假设我们有一个名为employees
的表,其中包含department
(部门)和salary
(薪水)两个字段。我们想要找出每个部门的平均薪水,但只显示那些平均薪水高于整个公司平均薪水的部门。
SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > (
SELECT AVG(salary) FROM employees
);
在这个查询中,我们使用了子查询来计算整个公司的平均薪水,并将其与每个部门的平均薪水进行比较。但是,这个查询并没有使用条件表达式。要使用条件表达式,我们可以稍微修改一下查询:
SELECT department,
AVG(salary) AS average_salary,
CASE
WHEN AVG(salary) > (SELECT AVG(salary) FROM employees) THEN 'High'
ELSE 'Low'
END AS salary_level
FROM employees
GROUP BY department;
在这个修改后的查询中,我们添加了一个CASE
表达式来根据部门的平均薪水是否高于整个公司的平均薪水来标记该部门的薪水水平。如果部门的平均薪水高于整个公司的平均薪水,则salary_level
列将显示’High’;否则,它将显示’Low’。