ประกอบรถ BMW?
ในแบบฝึกหัดนี้ จะตอบคำถามต่อไปนี้: ปริมาณรวมที่ต้องใช้ Total ของแต่ละชิ้นส่วนเพื่อประกอบรถยนต์จนถึงระดับที่ 3 ในลำดับชั้นคือเท่าใด?
หน้าที่คือสร้าง CTE ชื่อ construction_Plan เพื่อติดตามระดับของชิ้นส่วนและคำนวณปริมาณรวมของชิ้นส่วนในฟิลด์ Total โดยตารางประกอบด้วยฟิลด์ PartID, SubPartID, Level, Component และ Total และต้องพิจารณาชิ้นส่วนทั้งหมดตั้งแต่ระดับ 1 จนถึงระดับ 3
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Hierarchical and Recursive Queries in SQL Server
คำแนะนำการฝึกหัด
- กำหนด
construction_Planพร้อมระบุฟิลด์ที่จำเป็น - กำหนดค่าเริ่มต้นของ
Totalด้วยQuantityใน anchor element ของ CTE - เพิ่มค่า
Totalด้วยQuantityของ child element ในส่วน recursion element - ใช้
SUM()เพื่อคำนวณผลรวมของTotalบนข้อมูลที่รวมกลุ่มตาม ID ของลำดับชั้น
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- 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;