BMW を組み立てる?
この演習では、次の問いに答えます。階層のレベル3まででクルマを組み立てるために、各コンポーネントに必要な合計数量 Total はいくつですか?
あなたのタスクは、コンポーネントのレベルを追跡し、フィールド Total に各コンポーネントの合計数量を計算するための CTE construction_Plan を作成することです。テーブルは PartID、SubPartID、Level、Component、Total の各フィールドで構成されています。レベル1からレベル3までのすべてのコンポーネントを対象にしてください。
この演習はコースの一部です
SQL Server における階層型クエリと再帰クエリ
演習の手順
- 必要なフィールドで
construction_Planを定義します。 CTEのアンカー要素でTotalをQuantityで初期化します。- 再帰要素で子要素の
QuantityをTotalに加算していきます。 - 階層の ID による集約情報に対して、
SUM()を用いてTotalの合計を作成します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
-- Define CTE with the fields: PartID, SubPartID, Level, Component, Total
WITH ___ (___, ___, ___, ___, ___) AS (
SELECT
PartID,SubPartID,
0,
Component,
-- Initialize Total
___
FROM partList
WHERE PartID = '1'
UNION ALL
SELECT
CHILD.PartID, CHILD.SubPartID,
PARENT.Level + 1,
CHILD.Component,
-- Increase Total by the quantity of the child element
PARENT.___ + CHILD.___
FROM construction_Plan PARENT, partList CHILD
WHERE CHILD.SubPartID = PARENT.PartID
AND PARENT.Level < 3)
SELECT
PartID, SubPartID,Component,
-- Calculate the sum of total on the aggregated information
___(___)
FROM construction_Plan
GROUP BY PartID, SubPartID, Component
ORDER BY PartID, SubPartID;