ฟังก์ชัน LEAD() ของเซิร์ฟเวอร์ SQL

Fangkchan Lead Khxng Seirfwexr Sql



ในบทความนี้ เราจะแนะนำคุณเกี่ยวกับพื้นฐานของการทำงานกับฟังก์ชัน lead() ใน SQL Server เราจะพูดถึงฟังก์ชันนี้ ไวยากรณ์ และตัวอย่างการใช้งานจริง

ฟังก์ชันนำของเซิร์ฟเวอร์ SQL

ฟังก์ชันนำใน SQL Server เป็นฟังก์ชันวิเคราะห์ที่ช่วยให้คุณเข้าถึงข้อมูลจากแถวถัดไปในชุดผลลัพธ์เดียวกันโดยไม่ต้องเข้าร่วมด้วยตนเอง

ฟังก์ชันนี้ช่วยให้คุณเข้าถึงแถวที่ออฟเซ็ตที่กำหนดก่อนหน้าแถวปัจจุบัน ตัวอย่างเช่น เมื่อใช้ฟังก์ชันลีด คุณสามารถค้นหาแถวต่อจากแถวปัจจุบัน แถวที่ 10 จากแถวปัจจุบัน เป็นต้น







ฟังก์ชันนี้ช่วยให้นักพัฒนาฐานข้อมูลทำการเปรียบเทียบแถวโดยไม่ต้องทำงานที่ซับซ้อน เช่น การเข้าร่วม การใช้มุมมอง เป็นต้น



ไวยากรณ์ของฟังก์ชัน

ต่อไปนี้แสดงถึงไวยากรณ์ของฟังก์ชัน Lead() ใน SQL Server:



LEAD ( scalar_expression [ ,offset ] , [ ค่าเริ่มต้น ] )
มากกว่า ( [ partition_by_clause ] order_by_clause )

รายการที่ตามมาคืออาร์กิวเมนต์ที่ได้รับการสนับสนุนและฟังก์ชันการทำงาน:





  1. scalar_expression – อาร์กิวเมนต์นี้ระบุค่าส่งคืนตามค่าชดเชยที่กำหนด นี่อาจเป็นนิพจน์ประเภทใดก็ได้ที่ส่งคืนค่าเดียว อย่างไรก็ตาม ค่าของ scalar_expression ไม่สามารถเป็นฟังก์ชันการวิเคราะห์/หน้าต่างอื่นได้
  2. offset – กำหนดจำนวนแถวจากตำแหน่งแถวปัจจุบันที่ค่าที่ดึงมา ตามค่าเริ่มต้น ฟังก์ชันจะดึงแถวคำคุณศัพท์จากแถวปัจจุบันทันที ในทำนองเดียวกัน ค่าของพารามิเตอร์ออฟเซ็ตไม่สามารถเป็นฟังก์ชันวิเคราะห์หรือจำนวนเต็มลบได้
  3. ค่าเริ่มต้น – พารามิเตอร์นี้ตั้งค่าเริ่มต้นหากค่าออฟเซ็ตที่ให้ไว้เกินขอบเขตของพาร์ติชันเป้าหมาย ตามค่าเริ่มต้น ฟังก์ชันจะคืนค่า NULL
  4. PARTITION BY – ส่วนคำสั่ง partition_by กำหนดกฎที่แบ่งชุดผลลัพธ์ออกเป็นส่วนต่างๆ จากนั้นจึงนำฟังก์ชันนี้ไปใช้กับแต่ละพาร์ติชันที่เป็นผลลัพธ์
  5. ORDER BY – กำหนดลำดับตรรกะที่ใช้แถวในแต่ละพาร์ติชัน

ฟังก์ชันส่งคืนประเภทข้อมูลที่กำหนดใน scalar_expression ถ้าค่าที่ส่งกลับเป็น NULL ฟังก์ชันจะส่งคืนค่า NULL

ข้อมูลตัวอย่าง

ให้เราใช้ฐานข้อมูลตัวอย่างบางส่วนเพื่อแสดงวิธีใช้ฟังก์ชันนำได้ดีที่สุด ขั้นแรก ใช้คำสั่งที่แสดงด้านล่าง:



วางฐานข้อมูลหากมีสินค้าคงคลัง;

สร้างคลังฐานข้อมูล

ใช้สินค้าคงคลัง

วางตารางถ้ามีผลิตภัณฑ์;

สร้างผลิตภัณฑ์ตาราง (
รหัสประจำตัว int คีย์หลักไม่เป็นโมฆะ
product_name varchar(100),
ผู้ผลิต varchar (50),
ปริมาณ int ไม่เป็นโมฆะ
ราคา int เริ่มต้น 0,
in_stock บิต
);
ใส่ลงในผลิตภัณฑ์ (ชื่อผลิตภัณฑ์, ผู้ผลิต, จำนวน, ราคา, สินค้าในสต็อก)
ค่า ('Apple iPad Air', 'Apple', 100, 569.99, 1),
('Samsung Galaxy Z Flip 4', 'ซัมซุง', 302, 1569.00, 1),
('Sony Playstation 5', 'Sony', 500, 499.99, 1),
('Samsung Galaxy Watch-5 Pro', 'ซัมซุง', 600, 209/.99, 1),
('Apple Watch Series 6', 'Apple', 459, 379.90, 1),
('Apple AirPods Pro', 'Apple', 200, 199.99, 1),
('55' สมาร์ททีวี OLED 4K คลาส S95B', 'Samsung', 900, 1999.90, 1),
('หน้าจอเกมโค้ง Odyssey Ark Quantum Mini-LED', 'Samsung', 50, 2999.90, 1);

ตารางผลลัพธ์จะแสดงดังนี้:

ตัวอย่างที่ 1 – การใช้ฟังก์ชัน Lead() ของเซิร์ฟเวอร์ SQL บนชุดผลลัพธ์

ตัวอย่างด้านล่างใช้ฟังก์ชัน Lead() เพื่อส่งคืนราคาของผลิตภัณฑ์ถัดไป

เลือก
ชื่อผลิตภัณฑ์,
ผู้ผลิต,
ปริมาณ,
ราคา,
ตะกั่ว(ราคา,
1) มากกว่า (
สั่งตามจำนวน)
จาก
สินค้า;

ตารางผลลัพธ์:

เนื่องจากไม่มีแถวจากคอลัมน์สุดท้าย ฟังก์ชันจึงคืนค่า NULL

ตัวอย่างที่ 2 – การใช้ฟังก์ชัน Lead() ของ SQL Server บนชุดพาร์ติชัน

เรายังสามารถดึงข้อมูลผลิตภัณฑ์ถัดไปในพาร์ติชันที่กำหนดได้อีกด้วย ตัวอย่างเช่น เราสามารถแบ่งพาร์ติชันข้อมูลด้านบนตามผู้ผลิตและใช้ฟังก์ชัน Lead() ในแต่ละพาร์ติชัน

ตัวอย่างภาพประกอบดังที่แสดง:

เลือก
ชื่อผลิตภัณฑ์,
ผู้ผลิต,
ปริมาณ,
ราคา,
ตะกั่ว(ราคา,
1) มากกว่า (
พาร์ติชันโดยผู้ผลิต
สั่งตามจำนวน)
จาก
สินค้า;

ข้อความค้นหาด้านบนควรแบ่งแถวตามผู้ผลิตและดึงราคาถัดไปสำหรับค่าในแต่ละพาร์ติชัน

ในกรณีนี้ มีสามพาร์ติชัน

บทสรุป

ในโพสต์นี้ คุณเข้าใจโครงสร้างพื้นฐานของฟังก์ชัน Lead() ใน SQL Server คุณยังได้เรียนรู้วิธีใช้ฟังก์ชัน Lead() กับชุดผลลัพธ์และพาร์ติชัน