วิธีเขียน Query เพื่อ Select Top N ของ Group

สมมติว่าเรามีข้อมูลเป็นตาราง Customer ซึ่งมีฟิลด์ credit เป็นข้อมูลเครดิตลูกค้า และฟิลด์ province ซึ่งบอกจังหวัดของลูกค้า
เราอาจจะรู้วิธีเขียน query เพื่อดึงคนที่มีเครดิตสูงสุด N ลำดับแรกออกมา (Top N)
เราอาจจะรู้วิธีทำ aggregation บางอย่าง เช่นหาค่า Min, Max หรือ Average ของแต่ละกลุ่ม(ในที่นี้คือจังหวัด) ออกมา
แต่ถ้าโจทย์ของเราคือ หา Top N ของแต่ละกลุ่มออกมาล่ะ?
Read the rest of this entry »

ROW_NUMBER() ฟังค์ชั่นใหม่ใน SQL Server 2005

(post นี้เอามาจากที่เคย post ไว้ที่ bloggang เมื่อนานมาแล้ว แต่ตอนนี้จะย้ายนิวาสมาอยู่ wordpress แล้ว)
สมหวังกันแล้วครับคราวนี้ ในที่สุด sql server ก็มีฟังค์ชั่น row_number() ไว้สำหรับบอกหมายเลขบรรทัดของการ query
ทีนี้เราก็จะสามารถทำ paging ให้กับ query ได้ซะที ว่าที่จริงมันก็ไม่ใช่เรื่องใหม่อะไร MySql เค้าทำ limit ได้มาตั้งนานแล้ว
Oracle ก็มี RowId ให้ใช้มานานแล้วเหมือนกัน
Read the rest of this entry »