SQL ด้านล่างนี้เป็นตัวอย่างที่ผมใช้เลือก record แรกจากกลุ่มของข้อมูลนะครับ ใช้บน BigQuery ซึ่งในตัวอย่างนี้ผมอยากจะเลือกเอา order แรกจาก source ที่ผมดึงมา โดยเรียงตาม publish date
SELECT
*
FROM (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY source ORDER BY publish_date ASC) rn
FROM
`main.order`
)
WHERE
rn = 1;
จะเป็นการ query 2 ชั้นนะครับ ชั้นด้านในเราจะใช้ ROW_NUMBER
โดยที่ทำ PARTITION BY source
แล้วก็เรียงด้วย publish date เนอะ โดยที่ query นี้เราจะได้ column เพิ่มขึ้นมาชื่อว่า rn ครับ จะมีค่า 1, 2, 3, … ไปเรื่อย ตามแต่ละ source
หลังจากนั้นผมก็แค่ query อีกรอบ เพื่อที่จะดึงเฉพาะ record ที่มีค่า rn = 1
ผมก็จะได้ record แรกแล้วเรียบร้อย