আমার এমন একটি পরিস্থিতি যা আমি মনে করি উইন্ডো ফাংশনটি ব্যবহার করে সমাধান করা যেতে পারে তবে আমি নিশ্চিত নই।
নিম্নলিখিত টেবিলটি কল্পনা করুন
CREATE TABLE tmp
( date timestamp,
id_type integer
) ;
INSERT INTO tmp
( date, id_type )
VALUES
( '2017-01-10 07:19:21.0', 3 ),
( '2017-01-10 07:19:22.0', 3 ),
( '2017-01-10 07:19:23.1', 3 ),
( '2017-01-10 07:19:24.1', 3 ),
( '2017-01-10 07:19:25.0', 3 ),
( '2017-01-10 07:19:26.0', 5 ),
( '2017-01-10 07:19:27.1', 3 ),
( '2017-01-10 07:19:28.0', 5 ),
( '2017-01-10 07:19:29.0', 5 ),
( '2017-01-10 07:19:30.1', 3 ),
( '2017-01-10 07:19:31.0', 5 ),
( '2017-01-10 07:19:32.0', 3 ),
( '2017-01-10 07:19:33.1', 5 ),
( '2017-01-10 07:19:35.0', 5 ),
( '2017-01-10 07:19:36.1', 5 ),
( '2017-01-10 07:19:37.1', 5 )
;
আইডি_ টাইপ কলামে প্রতিটি পরিবর্তনে আমি একটি নতুন গ্রুপ রাখতে চাই। EG ম গ্রুপটি 7:19:21 থেকে 7:19:25, 2 য় শুরু এবং 7:19:26 এ সমাপ্ত, এবং আরও।
এটি কাজ করার পরে, আমি গ্রুপগুলি সংজ্ঞায়িত করার জন্য আরও মানদণ্ড অন্তর্ভুক্ত করতে চাই।
এই মুহুর্তে, নীচের ক্যোয়ারী ব্যবহার করে ...
SELECT distinct
min(min(date)) over w as begin,
max(max(date)) over w as end,
id_type
from tmp
GROUP BY id_type
WINDOW w as (PARTITION BY id_type)
order by begin;
আমি নিম্নলিখিত ফলাফল পেতে:
begin end id_type
2017-01-10 07:19:21.0 2017-01-10 07:19:32.0 3
2017-01-10 07:19:26.0 2017-01-10 07:19:37.1 5
আমি যখন চাই:
begin end id_type
2017-01-10 07:19:21.0 2017-01-10 07:19:25.0 3
2017-01-10 07:19:26.0 2017-01-10 07:19:26.0 5
2017-01-10 07:19:27.1 2017-01-10 07:19:27.1 3
2017-01-10 07:19:28.0 2017-01-10 07:19:29.0 5
2017-01-10 07:19:30.1 2017-01-10 07:19:30.1 3
2017-01-10 07:19:31.0 2017-01-10 07:19:31.0 5
2017-01-10 07:19:32.0 2017-01-10 07:19:32.0 3
2017-01-10 07:19:33.1 2017-01-10 07:19:37.1 5
আমি এই প্রথম পদক্ষেপটি সমাধান করার পরে, গ্রুপগুলি ভাঙ্গার নিয়ম হিসাবে আমি আরও কলাম যুক্ত করব এবং এই অন্যান্যগুলি আবশ্যক।
পোস্টগ্রিজ সংস্করণ: 8.4 (আমাদের পোস্টগ্রিসের সাথে পোস্টগ্রিস রয়েছে, তাই এটি আপগ্রেড করা সহজ নয় Post পোস্টগ্রিস ফাংশনগুলির নাম পরিবর্তন হয় এবং অন্যান্য সমস্যা রয়েছে, তবে আশা করি আমরা ইতিমধ্যে সমস্ত কিছু লিখছি এবং নতুন সংস্করণটি নতুন সংস্করণটি 9.X ব্যবহার করবে postgis 2.x)