Sybase 12.7 Home Theater System User Manual


 
1 データベース・テーブルからのデータの選択
パフォーマンス&チューニング・ガイド 13
WHERE GROUP BY
の使用
注文数が 55 を超えており、ID 1000 より大きいすべての営業担当者をリス
トするには、次のコマンドを入力します。
SELECT sales_rep, count( * )
FROM sales_order
WHERE sales_rep > 1000
GROUP BY sales_rep
HAVING count( * ) > 55
Sybase IQ クエリ・オプティマイザは、それによってパフォーマンスが向上す
る場合、述部を HAVING 句から WHERE 句に移動します。たとえば、上記の
例で WHERE 句の代わりに述部を次のように指定した場合、クエリ・オプティ
マイザは述部を WHERE 句に移動します。
GROUP BY sales_rep
HAVING count( *) > 55
AND sales_rep > 1000
Sybase IQ は、この最適化を (OR IN を伴わない ) 単純な条件を使って実行し
ます。このため、WHERE 句と HAVING 句の両方を含むクエリを構築するとき
は、できるだけ多くの条件を WHERE 句で指定するようにします。
小計計算の活用
日付や場所などの次元によって異なるデータがある場合に、各次元でデータが
どのように異なるかを調べることが必要になる場合があります。ROLLUP
算子と CUBE 演算子を使用すると、グループ化カラムへの参照のリストから
複数レベルの小計と総計を作成できます。小計は、最も詳細なレベルから総計
まで「ロールアップ」します。たとえば、販売データを分析している場合は、
同じクエリを使用して全体の平均と年別の平均販売数を計算できます。
ROLLUP の使用
年別、モデル別、色別の合計自動車販売数を選択するには、次のコマンドを使
用します。
SELECT year, model, color, sum(sales)
FROM sales_tab
GROUP BY ROLLUP (year, model, color);
year model color sales
1990 Chevrolet red 5
1990 Chevrolet white 87
1990 Chevrolet blue 62
1990 Chevrolet NULL 154
1990 Ford blue 64
1990 Ford red 62
1990 Ford white 63
1990 Ford NULL 189
1990 NULL NULL 343