在Oracle中如何使用條件表達(dá)式

小樊
83
2024-09-24 08:57:03
欄目: 云計(jì)算

在Oracle中,您可以使用CASE語(yǔ)句來創(chuàng)建條件表達(dá)式。CASE語(yǔ)句允許您根據(jù)一個(gè)或多個(gè)條件對(duì)數(shù)據(jù)進(jìn)行分類,并返回相應(yīng)的值。以下是一個(gè)基本的CASE語(yǔ)句的語(yǔ)法:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END;

在這個(gè)結(jié)構(gòu)中:

  • condition1, condition2, … 是要測(cè)試的條件。
  • result1, result2, … 是當(dāng)條件為真時(shí)返回的值。
  • default_result 是當(dāng)所有條件都為假時(shí)返回的值。

下面是一個(gè)具體的例子。假設(shè)我們有一個(gè)名為employees的表,其中包含department(部門)和salary(薪水)兩個(gè)字段。我們想要找出每個(gè)部門的平均薪水,但只顯示那些平均薪水高于整個(gè)公司平均薪水的部門。

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > (
    SELECT AVG(salary) FROM employees
);

在這個(gè)查詢中,我們使用了子查詢來計(jì)算整個(gè)公司的平均薪水,并將其與每個(gè)部門的平均薪水進(jìn)行比較。但是,這個(gè)查詢并沒有使用條件表達(dá)式。要使用條件表達(dá)式,我們可以稍微修改一下查詢:

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;

在這個(gè)修改后的查詢中,我們添加了一個(gè)CASE表達(dá)式來根據(jù)部門的平均薪水是否高于整個(gè)公司的平均薪水來標(biāo)記該部門的薪水水平。如果部門的平均薪水高于整個(gè)公司的平均薪水,則salary_level列將顯示’High’;否則,它將顯示’Low’。

0