数学式は、算術演算子を使用するフィールド式です。これらの式は、SELECT 句と WHERE 句の両方の ADQL クエリで使用できます。
field_expression BINARY_OPERATORS field_expression
算術演算子
数学演算子は、整数および浮動小数データフィールド、定数(たとえば、3.14)、および 1 つの整数または浮動小数値を返す関数に対して有効です。ただし、%(モジュロ)は例外です。演算子 *, / and %
は、+
と -
よりも優先されます。丸カッコを使用すると、演算の順序を制御できます。単項マイナス(-)
)もサポートされています。
演算子 | 名前 | 説明 |
---|
* | アスタリスク | 乗算 |
/ | スラッシュ | 2 つの整数型の除算(整数除算として実行されます)。ゼロによる整数除算では NULL が返されます。 |
% | モジュロ | 2 つの整数の除算後の余りを計算します。整数に対してのみ有効です。 |
+ | プラス | 加算。数値リテラルの前にスペースが必要です。 |
- | マイナス | 減算。数値リテラルの前にスペースが必要です。unary_operator としても使用できます。 |
数学式の使用法
数学式は、いくつかの方法で使用できます。
クエリ | 結果 |
---|
SELECT regionId % 4, count (*) FROM transactions WHERE application = "yourApp" | 数学式は、クエリによる暗黙的なグループで GROUP BY 句として使用されます。 |
SELECT field_name1, (field_name2 + field_name3) * 3.14 FROM transactions WHERE application = "yourApp" | 数学式は複合フィールドとして使用されます。 |
SELECT sum (field_name1) / count (field_name2) FROM transactions WHERE application = "yourApp" SELECT filter(sum (field_name1), WHERE field2 IS NOT NULL) / count (field_name3) FROM ... | 集約関数で使用される数学式。 |
SELECT avg (field1 + field2) FROM event_type WHERE ... SELECT series (field1 + field2, 1) FROM event_type WHERE ... | 集約関数内で使用される数学式。 |
SELECT * FROM transactions WHERE (responseTime * cartValue) > 100 SELECT * FROM transactions WHERE (regionId % 3) IN (1, 2) SELECT * FROM transactions WHERE (responseTime * cartValue) BETWEEN (100, 200) | 比較演算子を含む WHERE 句で使用される数学式。 |
SELECT segments.userData.itemTitle, (segments.userData.itemPrice / 100) AS Price FROM transactions WHERE application = 'ECommerce 2.0' AND transactionName = '/product_details.xhtml' AND Price > 20 | セントの値をドルに変換します。 このクエリは、segments.userData.itemPrice をセントからドルに変換し、価格が $20 よりも大きい結果を示します。 |
SELECT transactionName, (responseTime / 1000) AS responseSeconds, userExperience, requestGUID FROM transactions WHERE application = "ECommerce 2.0" AND responseSeconds > 5 | 平均応答時間などの値をミリ秒単位ではなく秒単位に変換し、X 秒を超える各トランザクションを表示します。 |
使用方法に関する特記事項
式のいずれかのフィールドまたは中間式の結果が NULL の場合、式全体が NULL になります。
WHERE 句内の数学式は、集約ではなく、レコードごとに評価されます。
フィールドとメトリック関数を同じ式で組み合わせることはできません。たとえば、次のタイプのクエリは有効ではありません。
SELECT responseTime + sum(cartValue) FROM ...
(集約関数とは対照的に)すべてのイベントに対して動作する数学的操作により、クエリのパフォーマンスが低下します。次のようなステートメントは回避してください。
WHERE (responseTime - 200) > 800。代わりに WHERE responseTime > 1000 などのステートメントを使用してください。