数学式
数学式は、算術演算子を使用するフィールド式です。これらの式は、SELECT 句と WHERE 句の両方の ADQL クエリで使用できます。
field_expression BINARY_OPERATORS field_expression
算術演算子
数学演算子は、整数および浮動小数データフィールド、定数(たとえば、3.14)、および 1 つの整数または浮動小数値を返す関数に対して有効です。ただし、%(モジュロ)は例外です。演算子 *, / and % は、+ と - よりも優先されます。丸カッコを使用すると、演算の順序を制御できます。単項マイナス(-))もサポートされています。
| オペレーター | Name | 説明 |
|---|---|---|
| * | アスタリスク | 乗算 |
| / | スラッシュ |
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" | 数学式は複合フィールドとして使用されます。 |
|
sum count SELECT FROM transactions WHERE application = "yourApp" sum count SELECT filter( WHERE field2 IS NOT NULL) / FROM... | 集約関数で使用される数学式。 |
|
avg SELECT FROM event_type WHERE... series SELECT FROM event_type WHERE... | 集約関数内で使用される数学式。 |
|
SELECT * FROM transactions WHERE ( responseTime * cartValue) > 100 SELECT * FROMt ransactions 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 PriceFROM 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 などのステートメントを使用してください。