AnalyticDB for PostgreSQLは、PostgreSQL条件式と互換性があります。 このトピックでは、AnalyticDB for PostgreSQLでサポートされている条件式の構文と例について説明します。
PostgreSQL条件式の使用方法については、「条件式」をご参照ください。
制限事項
COALESCE、GREATEST、およびLEAST式は、構文の関数に似ています。 ただし、上記の式は通常の関数ではなく、VARIADIC配列引数を使用できません。
CASE
CASE式は、他のプログラミング言語のIF/ELSEステートメントと同様の一般的な条件式です。 CASE式は条件付き制御構造を使用し、クエリ内のさまざまな条件に基づいてさまざまな結果を返すことができます。
構文
CASE
WHEN expression = value THEN result
[WHEN expression = value THEN result ...]
[ELSE else_result]
END
簡易フォーマット:
CASE
WHEN condition THEN result
[WHEN condition THEN result ...]
[ELSE else_result]
END
説明
WHEN condition THEN result: 条件と対応する結果を定義します。 この形式では、複数の条件分岐を指定できます。
condition: 条件が真であるかどうかをテストするために使用されるブール式。result:条件がtrueの場合に返される値。
ELSE else_result: 上記の条件のいずれも満たされない場合、
else_result引数の値を返します。 この部分はオプションです。ELSE部分を指定せず、すべての条件が満たされない場合、CASE式はNULLを返します。
例
employeesという名前のテーブルには、給与とボーナスの列が含まれています。 給与範囲に基づいて従業員のボーナス率を計算します。
SELECT name, salary,
CASE
WHEN salary < 30000 THEN salary * 0.05 -- 5% bonus for low salaries
WHEN salary BETWEEN 30000 AND 50000 THEN salary * 0.10 -- 10% for medium
ELSE salary * 0.15 -- 15% for high salaries
END AS bonus_amount
FROM employees;この例では、CASE式を使用して、給与範囲に基づいてボーナス率を計算します。
COALESCE
COALESCE式は、リスト内のNULLではない最初の引数の値を返します。 NULL値を含む可能性のある列または式を処理する場合、COALESCE式を使用してデフォルト値を指定できます。
構文
COALESCE(value1, value2, ..., valueN)説明
COALESCE式は、引数を左から右に評価します。COALESCE式がNULLではない最初の引数を見つけた場合、式は引数の値を返し、評価を停止します。
すべての引数がNULLの場合、
COALESCE式はNULLを返します。
例
employeesという名前のテーブルには、従業員の電子メール情報が含まれます。 特定の従業員の電子メール情報はNULLであってもよい。
SELECT id, name, COALESCE(email, 'no_email@example.com') AS email
FROM employees;このクエリでは:
email引数の値がNULLの場合、COALESCE式はデフォルトのメールアドレスとして'no_email@example.com 'を返します。email引数の値がNULLでない場合、COALESCE式はemail引数の値を返します。
NULLIF
構文
NULLIF(expression1, expression2)説明
expression1引数とexpression2引数は、比較する2つの値または式を指定します。expression1引数の値がexpression2引数の値と等しい場合、NULLIF式はNULLを返します。expression1引数の値がexpression2引数の値と等しくない場合、NULLIF式はexpression1引数の値を返します。
例:
注文という名前のテーブルには、製品の価格と数量が含まれます。 あなたは各製品の平均価格を計算したいです。
SELECT product_id,
SUM(price * quantity) / NULLIF(SUM(quantity), 0) AS average_price
FROM orders
GROUP BY product_id;このクエリでは:
製品の合計数量 (
SUM(quantity)) が0の場合、NULLIF式はNULLを返します。 この場合、平均価格を計算するときにゼロによる除算のエラーが防止されます。商品の合計数量 (
SUM (数量)) が0でない場合、NULLIF式はSUM (数量)の値を返し、平均価格を計算できます。
最も素晴らしい
GREATEST式は、指定された引数の中で最大の値を返します。 複数の引数の最大値が同じ場合、いずれかの値が返されます。 すべての引数がNULLの場合、NULLが返されます。
構文
GREATEST(value1, value2, ..., valueN)例:
SELECT GREATEST(10, 20, 30); -- The expression returns 30.
SELECT GREATEST(5, 5, 2); -- The expression returns 5.
SELECT GREATEST(NULL, 1, 2); -- The expression returns 2.
SELECT GREATEST(NULL, NULL); -- The expression returns NULL.LEAST
LEAST式は、指定された引数の中で最小の値を返します。 複数の引数の最小値が同じ場合は、いずれかの値が返されます。 すべての引数がNULLの場合、NULLが返されます。
構文
LEAST(value1, value2, ..., valueN)例:
SELECT LEAST(10, 20, 30); -- The expression returns 10.
SELECT LEAST(5, 5, 2); -- The expression returns 2.
SELECT LEAST(NULL, 1, 2); -- The expression returns 1.
SELECT LEAST(NULL, NULL); -- The expression returns NULL.