プライマリ・コンテンツに移動
Oracle® Big Data Discovery Cloud Service EQLリファレンス

E65371-04
目次へ
目次
索引へ移動
索引

前
次
機械翻訳について

WHERE句

WHERE句は、式の入力レコードをフィルタ処理するために使用します。

EQLには2つのフィルタリング・オプションがあります: WHEREおよびHAVING WHERE句の構文は次のとおりです:
WHERE <BooleanExpression>

WHERE句は、FROM句の直後に指定する必要があります。

WHERE句は、次のようなブール式で使用できます:
  • 数値と文字列値の比較: {= , <>, <, <=, >, >=}
  • 検索条件の操作: SUBSETIS_MEMBER_OFなど
  • Null値の評価: <attribute> IS {NULL, NOT NULL} (アトミック値)および<attribute> IS {EMPTY, NOT EMPTY} (セットの場合)
  • ソース取引明細書のグループ化キー: <attribute-list> IN <source-statement> これらのキーの数と型は、IN句によって参照される文で使用されるキーの数とタイプに一致する必要があります。 詳細は、INを参照してください。
WHEREはソース内の属性を検索するため、SELECT句からのエイリアシング属性はWHERE句で使用できません。 したがって、次の例です:
RETURN results AS
SELECT
  FactSales_RecordSpec AS id,
  FactSales_ProductKey AS keys
FROM SaleState
WHERE id > 5
ORDER BY keys
無効であり、エラー・メッセージを返します:
In statement "results": In WHERE clause: The state "Sales" does not have an attribute named "id"

集計関数がWHERE句で使用されている場合、ブール式はカッコで囲む必要があります。 集計関数のリストは、「集計関数」のトピックを参照してください。

この例では、西部リージョンの売上に対してのみ金額が計算されます。 これらの結果から、少なくとも$ 10,000を生成した営業担当のみが戻されます:
RETURN Reps AS
SELECT 
  SUM(Amount) AS SalesTotal
FROM SaleState
WHERE Region = 'West'
GROUP BY SalesRep
HAVING SalesTotal > 10000
次の例では、1つの文に2つの式が含まれています。 最初の式はすべてのレコードの合計を計算し、2番目の式は1つの特定の営業担当の合計を計算します:
RETURN QuarterTotals AS 
SELECT 
  SUM(Amount) As SalesTotal, 
  SUM(Amount) WHERE (SalesRep = 'Juan Smith') AS JuanTotal
FROM SaleState
GROUP BY Quarter

この場合、四半期ごとに、総売上とJuan Smithの合計売上の両方が返されます。 WHERE句のブール式は、集計関数(この場合はSUM)で使用されるため、カッコで囲まれていることに注意してください。

2番目の例は、集計ごとのWHERE句の使用方法も示しています:
SUM(Amount) WHERE (SalesRep = 'Juan Smith') AS JuanTotal

集計ごとのWHEREフィルタの詳細は、「集計フィルタ」を参照してください。