দুটি নম্বর দেওয়া n
এবং m
, আমি ফর্মের একটি সিরিজ উত্পন্ন করতে চাই
1, 2, ..., (n-1), n, n, (n-1), ... 2, 1
এবং এটি m
বার বার।
উদাহরণস্বরূপ, এর জন্য n = 3
এবং m = 4
আমি নিম্নলিখিত 24 সংখ্যার ক্রম চাই:
1, 2, 3, 3, 2, 1, 1, 2, 3, 3, 2, 1, 1, 2, 3, 3, 2, 1, 1, 2, 3, 3, 2, 1
---------------- ---------------- ---------------- ----------------
আমি জানি যে পোস্টগ্র্রেএসকিউএলএর দুটি পদ্ধতির মধ্যে দিয়ে কীভাবে এই ফলাফলটি অর্জন করা যায়:
নিম্নলিখিত কোয়েরিটি ব্যবহার করে, যা generate_series
ফাংশনটি ব্যবহার করে এবং এই আদেশটি সঠিক হওয়ায় গ্যারান্টি দিতে কয়েকটি কৌশল:
WITH parameters (n, m) AS
(
VALUES (3, 5)
)
SELECT
xi
FROM
(
SELECT
i, i AS xi
FROM
parameters, generate_series(1, parameters.n) AS x(i)
UNION ALL
SELECT
i + parameters.n, parameters.n + 1 - i AS xi
FROM
parameters, generate_series(1, parameters.n) AS x(i)
) AS s0
CROSS JOIN
generate_series (1, (SELECT m FROM parameters)) AS x(j)
ORDER BY
j, i ;
... বা একই উদ্দেশ্যে একটি কার্যকারিতা ব্যবহার করুন, স্থগিত এবং নেস্টেড লুপগুলি সহ:
CREATE FUNCTION generate_up_down_series(
_elements /* n */ integer,
_repetitions /* m */ integer)
RETURNS SETOF integer AS
$BODY$
declare
j INTEGER ;
i INTEGER ;
begin
for j in 1 .. _repetitions loop
for i in 1 .. _elements loop
return next i ;
end loop ;
for i in reverse _elements .. 1 loop
return next i ;
end loop ;
end loop ;
end ;
$BODY$
LANGUAGE plpgsql IMMUTABLE STRICT ;
আমি কীভাবে সম্ভব স্ট্যান্ডার্ড এসকিউএল বা লেনদেন-এসকিউএল / এসকিউএল সার্ভারে সমতুল্য করতে পারি?