ด้านล่างนี้คือลักษณะของตาราง Raw ใน presto
ฉันต้องการสร้างตารางใหม่โดยที่สำหรับแต่ละ Item ID วันที่ต่อเนื่องควรมีวันที่เริ่มต้นและวันที่สิ้นสุดไม่ว่าจะมีความต่อเนื่องใน presto
ด้านล่างนี้คือลักษณะของตารางตัวอย่าง
ด้านล่างนี้คือลักษณะของตาราง Raw ใน presto
ฉันต้องการสร้างตารางใหม่โดยที่สำหรับแต่ละ Item ID วันที่ต่อเนื่องควรมีวันที่เริ่มต้นและวันที่สิ้นสุดไม่ว่าจะมีความต่อเนื่องใน presto
ด้านล่างนี้คือลักษณะของตารางตัวอย่าง
นี่เป็นปัญหาช่องว่างและหมู่เกาะ วิธีที่ง่ายที่สุดคือการลบลำดับเพื่อให้ได้วันที่คงที่ จากนั้นจึงรวม:
select id, min(datefield), max(datefield)
from (select t.*, row_number() over (partition by id order by datefield) as seqnum
from t
) t
group by id, (datefield - seqnum * interval '1 day');
ฟังก์ชั่นหน้าต่างแตกต่างกันไปตามฐานข้อมูล ตรรกะจะเหมือนกัน แต่ไวยากรณ์สำหรับการลบ seqnum
วันจาก datefield
อาจแตกต่างกัน
select t.*, (datefield - seqnum * interval '1 day') from t order by id, datefield
แล้วคุณจะเห็นได้ด้วยตัวเอง
- person Gordon Linoff; 01.07.2020