วันพฤหัสบดีที่ 21 มิถุนายน พ.ศ. 2555

Ranking functions in SQL Server 2005


Ranking function เป็นของเล่นใหม่อีกชิ้นบน MS SQL Server 2005 ครับ
ปกติเวลาเราจะสร้างคำสั่ง Select ที่พ่วงฟิลด์ที่ไว้แสดงลำดับของ Record
หรือการจัดลำดับข้อมูลตามเงื่อนไข บน MS SQL version ก่อนหน้านี้เราต้องทำบน Temp table ใช่ไหมครับ
ซึ่งค่อนข้างเสียเวลาในการ coding มา version 2005 ก็ได้มี feature ใหม่ให้ได้เรียกใช้นั่นก็คือ Ranking function
ซึ่งแต่ละ function อธิบายคร่าว ๆ ได้ดังนี้ครับ
Row_number(): ตัวนี้เบสิคสุด ใช้สำหรับสร้างหมายเลขลำดับเพื่อกำกับแต่ละ record ที่ทำการ select ขึ้นมาแสดง
ตัวอย่าง :
Query: select row_number() over(order by sal desc) rank, empno,ename,sal from emp

Rank(): ใช้สำหรับจัดอันดับตามเงื่อนไข ของฟิลด์ที่กำหนด เช่นการจัดอับดับคะแนนของบุคคลในฝ่าย คะแนนซ้ำก็จะอยู่ในลำดับเดียวกัน
ตัวอย่าง
Query: select rank() over(order by sal desc) rank, empno,sal,ename from emp

Dense_rank() ทำงานเหมือน Rank() แต่จะเรียงลำดับข้อมูลไปเลย เมื่อมีคะแนนซ้ำกันจะไม่เว้นลำดับว่างไว้
ตัวอย่าง
Query: select dense_rank() over(order by sal desc) rank, empno,sal,ename from emp

Ntile(n): เป็นฟังก์ชั่นในการจัดกลุ่มของข้อมูลใน Table ออกเป็นจำนวน Record ที่เท่า ๆ กัน เหมาะสำหรับการแบ่งข้อมูลเป็น Page เพื่อแสดง
ตัวอย่าง
Query: select ntile(2) over(order by sal desc) rank, empno,sal,ename from emp
หวังว่าคงมีประโยชน์สำหรับนักพัฒนาทุก ๆ ท่านสำหรับไปประยุกต์ใช้ในงานต่าง ๆ นะครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น