একটি টেবিল বিবেচনা করুন যা দর্শন রেকর্ড করে
create table visits (
person varchar(10),
ts timestamp,
somevalue varchar(10)
)
এই উদাহরণ ডেটা বিবেচনা করুন (টাইমস্ট্যাম্প কাউন্টার হিসাবে সরলীকৃত)
ts| person | somevalue
-------------------------
1 | bob |null
2 | bob |null
3 | jim |null
4 | bob | A
5 | bob | null
6 | bob | B
7 | jim | X
8 | jim | Y
9 | jim | null
আমি সেই ব্যক্তির সর্বশেষ নন-নাল কিছু মূল্য ভবিষ্যতের পরিদর্শনে এগিয়ে নিয়ে যাওয়ার চেষ্টা করছি যতক্ষণ না সেই মান পরিবর্তিত হয় (অর্থাত্ পরবর্তী নন-নাল হয়ে যায়)।
প্রত্যাশিত ফলাফল সেটটি দেখতে এমন দেখাচ্ছে:
ts| person | somevalue | carry-forward
-----------------------------------------------
1 | bob |null | null
2 | bob |null | null
3 | jim |null | null
4 | bob | A | A
5 | bob | null | A
6 | bob | B | B
7 | jim | X | X
8 | jim | Y | Y
9 | jim | null | Y
আমার প্রচেষ্টাটি এরকম দেখাচ্ছে:
select *,
first_value(somevalue) over (partition by person order by (somevalue is null), ts rows between UNBOUNDED PRECEDING AND current row ) as carry_forward
from visits
order by ts
দ্রষ্টব্য: (কিছুটা নাল হয়) বাছাইয়ের উদ্দেশ্যে 1 বা 0 এ মূল্যায়ন করে যাতে আমি পার্টিশনে প্রথম নন-মান পেতে পারি।
উপরেরটি আমাকে পরে ফলাফল দেয় না।
pg_dump
কোনও পিএসকিএল আউটপুটে ডেটা পেস্ট করার চেয়ে টেস্টের ডেটা এবং টেবিলের জন্য স্কিমা পেস্ট করতে পারবেন?pg_dump -t table -d database
আমাদের তৈরি এবংCOPY
আদেশগুলি দরকার।