Sybase 12.7 Home Theater System User Manual


 
GROUP BY 句の拡張機能
50 Sybase IQ
次の例では、結果セットの中に Grouping() カラムが含まれています。強調表示
されているローは、小計ローであるために NULL を含んでいるのではなく、入
力データの結果として NULL を含んでいるローです。Grouping() カラムは強調
表示されています。このクエリは、employee テーブルと sales_order テーブ
ルの間の外部ジョインです。このクエリでは、テキサス、ニューヨーク、また
はカリフォルニアに住んでいる女性従業員を選択しています。営業担当者でな
( したがって売上がない ) 女性従業員については、カラムに NULL が表示さ
れます。
SELECT employee.emp_id AS Employee, year(order_date) AS
Year, COUNT(*) AS Orders, GROUPING(Employee) AS
GE, GROUPING(Year) AS GY
FROM employee LEFT OUTER JOIN alt_sales_order ON
employee.emp_id = alt_sales_order.sales_rep
WHERE employee.sex IN ('F') AND employee.state
IN ('TX', 'CA', 'NY')
GROUP BY ROLLUP (Year, Employee)
ORDER BY Year, Employee
このクエリの結果セットを次に示します。
emp_id year Orders GY GE
------ ---- ------ -- --
NULL NULL 1 1 0
NULL NULL 165 1 1
1090 NULL 1 0 0
NULL 2000 98 1 0
667 2000 34 0 0
949 2000 31 0 0
1142 2000 33 0 0
NULL 2001 66 1 0
667 2001 20 0 0
949 2001 22 0 0
1142 2001 24 0 0
個々のプレフィクスについて、プレフィクス・カラムに同じ値が含まれている
すべてのローに関する小計ローが作成されます。
ROLLUP の結果を具体的に説明するために、前述のクエリの例をもう一度詳
しく見ていきます。
SELECT year (order_date) AS Year, quarter
(order_date) AS Quarter, COUNT (*) Orders
FROM sales_order
GROUP BY ROLLUP (Year, Quarter)
ORDER BY Year, Quarter
このクエリでは、Year カラムを含んでいるプレフィクスにより、Year=2000
合計ローと Year=2001 の合計ローが作成されます。このプレフィクスに関する
1 つの合計ローはカラムを含んでいません。これは、中間の結果セットに含ま
れているすべてのローの小計です。