ฟังก์ชั่นนำ SQL

Fang Kchan Na Sql



ฟังก์ชัน SQL lead() ช่วยให้คุณเข้าถึงแถวถัดไปจากแถวปัจจุบันที่ออฟเซ็ตเฉพาะ กล่าวโดยสรุป ฟังก์ชัน lead() ช่วยให้คุณเข้าถึงแถวถัดไปจากแถวปัจจุบันได้ ด้วยการระบุค่าออฟเซ็ต คุณสามารถเข้าถึงแถว 1, 2, 3 ฯลฯ ถัดไปจากแถวปัจจุบันได้

มันอยู่ตรงข้ามกับฟังก์ชัน lag() ซึ่งช่วยให้คุณเข้าถึงแถวก่อนหน้าได้







ฟังก์ชัน SQL Lead()

ไวยากรณ์ของฟังก์ชันมีดังนี้:



LEAD(value_expression, ออฟเซ็ต [, ค่าเริ่มต้น])
เกิน (
[แบ่งตาม partition_expression]
เรียงลำดับตาม sort_expression [ASC | รายละเอียด]
);

ต่อไปนี้เป็นข้อโต้แย้งที่ได้รับการสนับสนุน:



  1. ค่า_การแสดงออก – ระบุค่าตอบแทนของแถวก่อนหน้า นิพจน์ต้องประเมินเป็นค่าเดียว
  2. ชดเชย – ระบุจำนวนแถวที่ส่งต่อจากแถวปัจจุบันที่จะเข้าถึง
  3. ค่าเริ่มต้น – จะตั้งค่าเริ่มต้นหากออฟเซ็ตอยู่นอกขอบเขตของพาร์ติชัน ตามค่าเริ่มต้น ค่าจะถูกตั้งเป็น NULL
  4. แบ่งพาร์ติชั่นโดย – ระบุวิธีการแบ่งพาร์ติชันข้อมูล
  5. สั่งโดย – กำหนดรูปแบบลำดับสำหรับแถวในแต่ละพาร์ติชัน

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

ก่อนที่เราจะเจาะลึกการทำงานของฟังก์ชัน lead() ให้เราเริ่มต้นด้วยการตั้งค่าตารางพื้นฐานเพื่อวัตถุประสงค์ในการสาธิต





สร้างผลิตภัณฑ์ตาราง (
product_id INT คีย์หลัก AUTO_INCREMENT,
ชื่อผลิตภัณฑ์ VARCHAR(255)
หมวดหมู่ VARCHAR (255)
ราคา ทศนิยม(10, 2),
ปริมาณ INT,
expiration_date วันที่,
บาร์โค้ด BIGINT
);

แทรก
เข้าไปข้างใน
ผลิตภัณฑ์ (ชื่อผลิตภัณฑ์,
หมวดหมู่,
ราคา,
ปริมาณ,
วันหมดอายุ,
บาร์โค้ด)
ค่า ('หมวกเชฟ 25 ซม.',
'เบเกอรี่',
24.67,
57,
'2023-09-09',
2854509564204);

แทรก
เข้าไปข้างใน
ผลิตภัณฑ์ (ชื่อผลิตภัณฑ์,
หมวดหมู่,
ราคา,
ปริมาณ,
วันหมดอายุ,
บาร์โค้ด)
ค่านิยม ('ไข่นกกระทา - กระป๋อง',
'ตู้กับข้าว',
17.99 น.
67,
'2023-09-29',
1708039594250);

แทรก
เข้าไปข้างใน
ผลิตภัณฑ์ (ชื่อผลิตภัณฑ์,
หมวดหมู่,
ราคา,
ปริมาณ,
วันหมดอายุ,
บาร์โค้ด)
ค่านิยม ('กาแฟ - Egg Nog Capuccino',
'เบเกอรี่',
92.53,
10,
'2023-09-22',
8704051853058);

แทรก
เข้าไปข้างใน
ผลิตภัณฑ์ (ชื่อผลิตภัณฑ์,
หมวดหมู่,
ราคา,
ปริมาณ,
วันหมดอายุ,
บาร์โค้ด)
ค่านิยม ('ลูกแพร์ - เต็มไปด้วยหนาม',
'เบเกอรี่',
65.29,
48,
'23-08-2023',
5174927442238);

แทรก
เข้าไปข้างใน
ผลิตภัณฑ์ (ชื่อผลิตภัณฑ์,
หมวดหมู่,
ราคา,
ปริมาณ,
วันหมดอายุ,
บาร์โค้ด)
ค่านิยม ('พาสต้า - ผมนางฟ้า',
'ตู้กับข้าว',
48.38,
59,
'2023-08-05',
8008123704782);

แทรก
เข้าไปข้างใน
ผลิตภัณฑ์ (ชื่อผลิตภัณฑ์,
หมวดหมู่,
ราคา,
ปริมาณ,
วันหมดอายุ,
บาร์โค้ด)
ค่านิยม ('ไวน์ - Prosecco Valdobiaddene',
'ผลิต',
44.18,
3,
'2023-03-13',
6470981735653);

แทรก
เข้าไปข้างใน
ผลิตภัณฑ์ (ชื่อผลิตภัณฑ์,
หมวดหมู่,
ราคา,
ปริมาณ,
วันหมดอายุ,
บาร์โค้ด)
ค่า ('ขนมอบ - เฟรนช์มินิคละ',
'ตู้กับข้าว',
36.73,
52,
'2023-05-29',
5963886298051);

แทรก
เข้าไปข้างใน
ผลิตภัณฑ์ (ชื่อผลิตภัณฑ์,
หมวดหมู่,
ราคา,
ปริมาณ,
วันหมดอายุ,
บาร์โค้ด)
ค่านิยม ('ส้ม - กระป๋อง, จีนกลาง',
'ผลิต',
65.0,
1,
'2023-04-20',
6131761721332);

แทรก
เข้าไปข้างใน
ผลิตภัณฑ์ (ชื่อผลิตภัณฑ์,
หมวดหมู่,
ราคา,
ปริมาณ,
วันหมดอายุ,
บาร์โค้ด)
ค่านิยม ('หมู-ไหล่',
'ผลิต',
55.55,
73,
'2023-05-01',
9343592107125);

แทรก
เข้าไปข้างใน
ผลิตภัณฑ์ (ชื่อผลิตภัณฑ์,
หมวดหมู่,
ราคา,
ปริมาณ,
วันหมดอายุ,
บาร์โค้ด)

ค่านิยม ('Dc Hikiage Hira Huba',
'ผลิต',
56.29,
53,
'2023-04-14',
3354910667072);

ตัวอย่างที่ 1:

ในกรณีนี้ เรามีสิทธิ์เข้าถึงตาราง 'ผลิตภัณฑ์' ซึ่งมีข้อมูลผลิตภัณฑ์ สมมติว่าเราต้องการรับบาร์โค้ดถัดไปจากแถวปัจจุบัน

เราสามารถใช้ฟังก์ชัน lead() ได้ดังนี้:



สมมติว่าเรามีตารางที่มีข้อมูลพนักงานดังต่อไปนี้:

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

รหัสที่กำหนดแบ่งพาร์ติชันข้อมูลตามหมวดหมู่ จากนั้นจะดึงบาร์โค้ดถัดไปในพาร์ติชันโดยใช้ฟังก์ชัน lead()

ผลลัพธ์ที่ได้จะเป็นดังนี้:

ตัวอย่างที่ 2:

หากไม่มีแถวถัดไปในคอลัมน์ใดคอลัมน์หนึ่ง (ไม่อยู่ในขอบเขต) ฟังก์ชันจะตั้งค่าเป็น NULL ดังที่แสดงในตัวอย่างก่อนหน้านี้

หากต้องการตั้งค่าเริ่มต้นสำหรับการเข้าถึงนอกขอบเขต เราสามารถดำเนินการดังต่อไปนี้:

เลือก
ชื่อผลิตภัณฑ์,
ราคา,
ลูกค้าเป้าหมาย (บาร์โค้ด, 1, 'N/A') เกิน (แบ่งพาร์ติชันตามหมวดหมู่
สั่งโดย
ราคา asc) เป็น next_item
จาก
ผลิตภัณฑ์พี;

เราตั้งค่าเริ่มต้นเป็น 'N/A' สิ่งนี้ควรแทนที่ค่านอกขอบเขตใด ๆ ดังที่แสดงในผลลัพธ์ต่อไปนี้:

บันทึก : การตั้งค่าออฟเซ็ตเป็น 1 คล้ายกับการไม่ระบุค่าใดๆ

ตัวอย่างที่ 3:

สมมติว่าคุณต้องการเข้าถึงสองแถวถัดไปจากแถวปัจจุบัน เราสามารถทำได้โดยตั้งค่าออฟเซ็ตเป็น 2

แบบสอบถามตัวอย่างจะแสดงดังต่อไปนี้:

เลือก
ชื่อผลิตภัณฑ์,
ราคา,
ลูกค้าเป้าหมาย (บาร์โค้ด, 2, 'N/A') เกิน (แบ่งพาร์ติชันตามหมวดหมู่
สั่งโดย
ราคา asc) เป็น next_item
จาก
ผลิตภัณฑ์พี;

แบบสอบถามนี้ส่งคืนสองแถวถัดไปในแต่ละพาร์ติชันดังแสดงต่อไปนี้:

ได้แล้ว!

บทสรุป

ในบทช่วยสอนนี้ เราได้เรียนรู้วิธีทำงานกับฟังก์ชัน lead() เพื่อรับรายการถัดไปจากแถวปัจจุบัน