หาข้อมูลที่ซ้ำซ้อนในตารางด้วย LAG Function

LAG Function
เป็นฟังก์ชันที่ให้เราสามารถเข้าถึงแถวข้อมูลก่อนหน้าของตารางได้โดยที่ไม่ต้องทำการ self-join

รูปแบบการใช้งาน
LAG ( expression [, offset [, default] ] )
OVER ( [ query_partition_clause ] order_by_clause )

โดยที่

  • expression : ฟิลด์ข้อมูลที่ต้องการแสดง
  • offset : ระบุว่าต้องการแถวข้อมูลลำดับที่เท่าไหร่ก่อนแถวปัจจุบัน เช่น 2 คือต้องการข้อมูลลำดับที่สองก่อนหน้าแถวปัจจุบัน กรณีไม่ระบุ จะหมายถึงข้อมูลแถวที่1
  • query_partition_clause : ใช้สำหรับการจัดกลุ่มข้อมูลเพื่อให้ได้ผลลัพธ์ตามกลุ่มที่ต้องการ
  • order_by_clause : ใช้เพื่อจัดลำดับข้อมูลภายในแต่ละ partition

ตัวอย่าง : การใช้งานฟังก์ชัน LAG

Query ข้างต้นเป็นการหาผลการเรียนของภาคการศึกษาก่อนหน้าของรายวิชาที่ลงทะเบียนเรียน โดยที่

  • expression : ข้อมูลผลการเรียนคือฟิลด์ GRADE
  • offset : กรณีไม่ระบุหมายถึงลำดับที่หนึ่งก่อนแถวปัจจุบัน และ ตัวเลข 2 หมายถึง ลำดับที่สองก่อนแถวปัจจุบัน
  • query_partition_clause : จัดกลุ่มข้อมูลตามฟิลด์ SUBJECT_ID
  • order_by_clause : จัดเรียงข้อมูลภายใน SUBJECT_ID ด้วยฟิลด์ EDU_YEAR แล้วตามด้วยฟิลด์ EDU_TERM

ผลลัพธ์จาก Query

✔ ฟิลด์ GRADE_BEFORE_1 = ผลการเรียนภาคการศึกษาก่อนหน้า
✔ ฟิลด์ GRADE_BEFORE_2 = ผลการเรียนของ 2 ภาคการศึกษาก่อนหน้า
กรณีรายวิชาไหนมีค่าเป็น NULL หมายความว่านักศึกษาลงทะเบียนเรียนเพียงครั้งเดียว ไม่เคยลงทะเบียนเรียนซ้ำ
รายวิชาในกรอบสีแดงคือรายวิชาที่นักศึกษามีการลงทะเบียนเรียนซ้ำ ตัวอย่างเช่น
🎯 รายวิชา 0006343 มีการลงทะเบียนเรียน 2 ครั้ง
🎯 รายวิชา 0007615 มีการลงทะเบียนเรียน 5 ครั้ง
สามารถดูข้อมูลผลการเรียนของภาคการศึกษาก่อนหน้าได้ที่ฟิลด์ GRADE_BEFORE_1 และ GRADE_BEFORE_2

คราวนี้เรามาประยุกต์ใช้งานฟังก์ชัน LAG กันค่ะ

ตัวอย่าง : การประยุกต์ใช้ฟังก์ชัน LAG เพื่อหาข้อมูลที่ซ้ำซ้อนในตาราง
เรามีตารางข้อมูลชื่อ V3_PLAN_SEC2_1_PLO ซึ่งประกอบด้วยฟิลด์
PLAN_SEC2_1_PLO_ID (🔑) , PLAN_REPORT_ID และ PLO_DESC
โดยเงื่อนไขของระบบกำหนดไว้ว่าจะต้องมี PLAN_REPORT_ID และ PLO_DESC เพียงรายการเดียวเท่านั้น

📌จากข้อมูลข้างต้นจะเห็นว่ามีข้อมูลที่มีรายการซ้ำซ้อนของข้อมูล PLAN_REPORT_ID และ PLO_DESC
เช่นที่ PLAN_REPORT_ID = C2933F24A525 และที่ PLAN_REPORT_ID = C29482CB6553 เป็นต้น📌

วิธีการหาข้อมูลที่ซ้ำซ้อนเราสามารถหาได้หลายวิธีแต่วันนี้จะขอนำเสนอการประยุกต์ใช้ฟังก์ชัน LAG เพื่อหาข้อมูลที่ซ้ำซ้อนกันค่ะ
ตามคำอธิบายข้างต้น LAG Function เป็นฟังก์ชันที่ให้เราสามารถเข้าถึงแถวข้อมูลก่อนแถวปัจจุบันได้โดยที่ไม่ต้องทำการ self-join
ดังนั้นเราก็จะประยุกต์ใช้ความสามารถนี้ในการหาข้อมูลที่ซ้ำซ้อนก้นโดยมีขั้นตอนด้งนี้

  • ใช้ฟังก์ชัน LAG ในการดึงค่าข้อมูล PLO_DESC ก่อนหน้า ของ PLAN_REPORT_ID ปัจจุบัน
  • ทำการเปรียบเทียบค่า PLO_DESC กับ PLO_DESC ก่อนหน้า
  • กรณี PLO_DESC มีค่าเท่ากับ PLO_DESC ก่อนหน้า แสดงว่าข้อมูลรายการปัจจุบันมีความซ้ำซ้อนกับข้อมูลก่อนหน้า

สามารถเขียนเป็น Query ได้ดังนี้

ผลลัพธ์จาก Query

😊😊เราได้ข้อมูลรายการที่ซ้ำซ้อนกันเรียบร้อยแล้วค่ะ ก็ไม่ยากแล้วใช่มั้ยคะที่จะลบรายการที่ซ้ำซ้อนออกจากตารางข้อมูลต่อไป
^_^ หวังว่าโพสนี้จะเป็นประโยชน์ต่อผู้อ่านไม่มากก็น้อยนะคะ แล้วพบกันใหม่ค่ะ

Share the Post:

Related Posts

ทำความรู้จักกับ Outlook บนเว็บ

Post Views: 6 Outlook เป็นเครื่องมือจัดการอีเมลและปฏิทินที่ทรงพลัง ซึ่งช่วยให้คุณมีระเบียบและเพิ่มความสามารถในการทำงาน ด้วยอินเทอร์เฟซที่ใช้งานง่าย คุณสามารถจัดการกล่องขาเข้าของคุณ นัดหมาย และทำงานร่วมกับเพื่อนร่วมงานได้อย่างง่ายดาย ฟีเจอร์ที่แข็งแกร่งของ Outlook รวมถึงแม่แบบอีเมลที่ปรับแต่งได้ ความสามารถในการค้นหาขั้นสูง และการผสานรวมที่ไร้รอยต่อกับแอปพลิเคชัน Microsoft Office อื่นๆ ไม่ว่าคุณจะเป็นมืออาชีพที่ยุ่งอยู่หรือเป็นนักเรียนที่ต้องจัดการกับภารกิจหลายอย่าง Outlook

Read More

[บันทึกกันลืม] JupyterHub Authenticated with OIDC

Post Views: 36 ต่อจากตอนที่แล้ว [บันทึกกันลืม] JupyterHub ด้วย Docker คราวนี้ ถ้าต้องการให้ ยืนยันตัวตนด้วย OpenID เช่น PSU Passport เป็นต้น ก็ให้ทำดังนี้ ในไฟล์ jupyterhub_config.py ใส่

Read More